0x01 文件分析
开启了栈不可执行
0x02 运行
运行一下没什么特殊的,猜测应该是栈溢出
0x03 IDA
虽然
buf
在栈上但输入的长度仅仅能够覆盖ebp
和返回地址
,但s
在bss
段,而且输入的长度也够长,因此想到了栈迁移
,覆盖vul_function
返回地址,使其到bss
段上执行
0x04 思路
s
在bss
段上的地址为0804A300
在
bss
段的s
上需要调用system("/bin/sh")
,但没有提供system
和"/bin/sh"
的地址,还需要写个ROP链,先泄露write
函数的真实地址
,再利用LibcSearcher
函数可以根据泄露的地址找到相应的libc版本
,从而得到system
和"/bin/sh"
的地址。
0x05 exp
#!/usr/bin/python2
#coding=utf-8
from pwn i