ret2text
将二进制(32字节)文件托入ida
F5显示出代码的c源码
可见解题关键是vulnerable()函数
漏洞十分明显gets栈溢出
gets读入数据长度不受限制
在虚拟机用gdb ret2text
run
输入8个A
然后进入vulnerable函数
ebp-eax=10(16进制)=16(10进制)
ebp本身有4个字节(32字节程序)
所以payload应该为16+4个字符+shell地址
payload=b'A'*16+b'B'*4+p32(0x08048522)
成功得到shell