pwn2test
|
这是一道自己编写的pwn2test题目,目的是打印出 “Pwn it !\n” 。先整理一下解题思路,首先通过f函数里的read实现栈溢出,将返回地址覆盖为backdoor的函数地址,但是可以看到需要传入参数为40才能打印。如何传递参数,需要得到参数在栈中与 ebp 的偏移对参数赋值,所以首先得获得执行到参数赋值时ebp在栈中的位置。并将其覆盖为40,也就是0x28。
首先使用ida打开文件,找到 f 函数,看到了read函数后,双击参数buf确定覆盖返回地址需要填充的字节数。可以确定填充字节数为 0x28+0x4 也就是0x30个字节。
然后,找到backdoor函数,可以看到
参数地址与ebp的偏移量为8,那么如何编写payload,需要确定参数地址与我们覆盖的retn地址在栈中的偏移量。如下图。
也就是只要在覆盖掉retn返回地址后再覆盖4个字节的栈空间,就是参数的地址了。
编写exp
from pwn import * #引入关于exp编写的代码 |
执行成功。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 z1inのblog!
评论