溢出对象:ret2text
调试工具: WinDbg,pattern.py,IDA
实验环境: Windows XP sp3,kali Linux
一、先查看下这个题逻辑
就是一个简单的输入输出程序。
二、查看一下程序的保护措施
开启了NX保护,因此不能在堆栈中写入shellcode。
三、IDA分析程序溢出点
gets()函数造成的溢出
四、判断变量到ret的偏移量
先使用python脚本程序生成500个不重复的字符
使用gdb将该程序挂起,将这500不重复字符作为输入
结果报错
查看0x64413764的偏移量为112
五、找现成的后门函数
在IDA里面查找,打开string窗口
在0x0804863A处将“/bin/sh”作为参数压入栈,并且下一步调用了_system函数,可以作为shellcode。
因此,只需要将返回地址覆盖成0x0804863A。
代码:
、
运行
成功!