第七届浙江省大学生网络与信息安全竞赛 决赛 - reverse_stack
make it happen!!!!!
文件属性
| 属性 | 值 |
|---|---|
| Arch | amd64 |
| RELRO | Full |
| Canary | off |
| NX | on |
| PIE | on |
| strip | no |
| libc | 2.35-0ubuntu3.8 |
解题思路
程序自己实现了一个正向增长的栈(向高地址增长),栈的上方是tls。
首先第一次LeaveNote在tls下方泄露libcBase,然后往上把tls的fs:[0x30]覆盖成0,这样方便做PTR_MANGLE。
然后blue pill第二次LeaveNote借之前的痕迹泄露mmapBase,计算tls的位置,打__call_tls_dtors。
此时在tls-0x58的位置放一个指针,指向PTR_MANGLE过的system,设置它的参数为"/bin/sh",
这样程序退出时就会自动执行这个"destructor",打开shell。
由于比赛的时候断网,因此无法自动下载libc的调试符号,讲起来有点怪怪的。
EXPLOIT
1 | from pwn import * |

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