终于开始学pwn了…今天第一次做出来这题,记录一下。
1、首先放到ida里查看函数情况,发现了fgets()函数
2、双击A追踪,发现A的大小为0x28(0x0804A0A8 - 0x0804A080),并且栈位置的的高位处就是n,所以可以填充0x28个'A',来溢出到n的位置。
3、并将‘/bin/sh’写到n的栈空间内
4、查看第二处gets的s,可以看到s[0]距离返回地址FD7C-FD48个字符,将返回地址改成system函数的地址即可去执行system函数。并传入上面构造的'/bin/sh'作为参数。
5、堆栈溢出,执行cll命令时,会再往栈内压入4个字节的call返回地址,所以手动压入AAAA作为返回地址,并将n的地址当作参数写入。