本人也是在自学过程,主要目的也是记录学习过程,有些地方做的不太好,都是按照自己理解进行讲解的(不专业),欢迎大家指出问题
此处我将文件命名为pwn
checksec pwn 查看一下保护机制

可以看到这是一个32-bit的文件,NX保护开启
将文件拖入ida,按F5将汇编代码转换成c语言代码,得到

双击vuln(),进入vuln函数

可以看到存在read栈溢出,需要填充0x6c+4的垃圾数据至return address
此题没有system函数,和/bin/sh,所以需要我们自己泄露这些地址
返回虚拟机
nano exp.py 开始写攻击脚本

payload:调用write函数,泄露write@got里存储的write函数的真实地址,进而得到system函数和/bin/sh的地址
payload2:填充0x6c+4的垃圾数据至return address,覆盖返回地址为system函数,调用system("/bin/sh"),获得shell
注释掉的LibcSearcher的方法找不到正确的libc版本,所以我们用固定偏移值来计算
保存退出
python3 exp.py
cat flag

此题完