pwnable.kr bof

一个简单的缓冲区溢出,用gdb调试,

程序首先传入一个参数0xdeadbeef,然后调用func函数,看看func处代码

_IO_get获取输入的数据,然后比较ebp+8和0xcafebabe是否相等,相等则打印flag。

执行get函数前堆栈如下ebp处数据如下图:

我们可以看到ebp+0xc正是我们调用func时传的第一个参数。而func函数要比较ebp+8处的数据是不是0xcafebabe,而我们从图中看到ebp+8的值是0x8000069f。_IO_get函数接收一个数组来存放输入的数据,我们可以通过缓冲区溢出来将ebp+8的数据覆盖0xcafebabe。

生成一串数据来测试。

输入测试的数据,执行后,堆栈如下,堆栈都被覆盖了。

0xbffff3e0地址正是我们要覆盖成0xcafebabe的地方,我们可以计算出偏移13*4=52,

也就是说前面填充52个字节+0xcafebabe就可以覆盖掉数据。所以我们构造payload

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
,