jarvisoj_level2
ROP-ret2text,栈溢出
首先checksec一下:

32位,有栈堆不可执行。

main函数调用了system函数,说明我们可以知道system函数的地址,找一下:

system_addr = 0x08048320
再看一下main函数中调用的另外一个函数vulnerable_function()

非常明显的栈溢出。
回忆一下栈帧结构:

在这里,我们首先溢出覆盖vulnerable_function()函数的返回地址,将返回地址修改成system函数,然后再往system函数里面塞入参数“/bin/sh”即可。


在system函数的栈帧结构是这样的:command参数在返回地址的上面,所以我们的payload的构造思路是这样的:

然后还需要一个参数“/bin/sh”,非常好的是我们不需要自己构造了,在Strings视图里面找到了一个存有此参数的地址,我们直接把这个地址塞进去即可。0x0804A024

exp:
1 | from pwn import * |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Kanyo’s Blogs!










