第七届浙江省大学生网络与信息安全竞赛 决赛 - ezPwn
a big apple
文件属性
| 属性 | 值 |
|---|---|
| Arch | amd64 |
| RELRO | Full |
| Canary | on |
| NX | on |
| PIE | on |
| strip | yes |
seccomp rules
解题思路
程序从一开始就读入了flag文件并放在bss中,还给了程序基址。后面就是菜单堆题。
edit函数没有对idx做校验,可以像初赛一样改stdout结构体。访问datas[-20]修改stdout结构体,
此时sizes[-20]恰好是(int)datas[6],因此分配7个堆块后就可以构造一个很大的数字。但是,
对于ubuntu,read的size不能超过SIZE_MAX,这取决于上述值的最高位,因此有50%概率导致read失败。
如果能成功read,把stdout的_flags设置成0xfbad1800,_IO_write_base设置成&flag,
_IO_write_ptr和_IO_write_end设置为flag+0x30。在函数edit返回,打印菜单时,
触发流刷新,同时打印出flag。
EXPLOIT
1 | from pwn import * |

- 标题: 第七届浙江省大学生网络与信息安全竞赛 决赛 - ezPwn
- 作者: RocketDev
- 创建于 : 2025-02-20 22:50:00
- 更新于 : 2026-03-27 15:59:00
- 链接: https://rocketma.dev/2025/02/20/ezPwn/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论