来一个简单ret2text
解题思路
将题目附件拖入IDA打开

左侧可以看到有backdoor后门函数


再看从程序开始执行到vuln函数,有一个gets()函数,这是一个栈溢出漏洞,因为没有对输入做出长度检查,我们可以去进行栈溢出
双击s可以看到s这里的栈布局

也可以在c代码页面中直接看,s这个参数到栈底rbp的距离是0x20

但是在这个溢出点前还有一个taffy()函数,点进去看一下是干什么用的

这里可以看到,这是对输入的字符进行一个比较,但是这是没有什么作用的,所以这里随便填,就能到下面的溢出点了
去查看backdoor()的地址,0x40123B

然后就可以去构造payload了
先发送0x20的垃圾数据填充从s到栈底的空间,再发送一个0x8的数据覆盖rbp,ret地址在rbp的下一位,所以在填充完从s到覆盖rbp的位置后就可以直接传backdoor()的函数
栈空间布局:

解题脚本(exp)
1 | from pwn import * |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 我的博客!