实验步骤:
-
首先拿到文件先看看有没有什么栈保护
因为在生成文件的时候我们就已经关掉了地址随机化,所以这里并没有什么栈保护 -
将文件拖入IDA中进行反编译,然后静态分析
这里有先写入hello world ,然后又进入了vulnerable_function函数,我们进入函数看看
我们发现用到了read函数,这里用到的是rbp定位,而它读了200个,实际rbp到ret只有(80+8)h的空间,很显然存在栈溢出漏洞,那我们下面要做的和以往一样,泄露system和bin_sh地址,然后通过ROP链getshell
- x64与x86的区别 因为64位程序的传参规则变了,所以我们的rop也要进行相应变动。
在原来的32位程序中我们会直接将目标函数的入口地址和相应的参数放在payload中,最后进行rop时,参数是根据与ebp的相对位置来进行确定的。
而在64位程序中,我们不仅要将目标函数的入口地址和相应参数放在payload中,同时