ISCTF2025-PWN全解
字数 2134 2025-12-16 12:07:21
ISCTF 2025 PWN题型全面解析
ONE: ez_fmt
题目概述
- 存在无限空间的格式化字符串漏洞
- 需要泄露地址并通过溢出实现控制流劫持
漏洞分析
- 格式化字符串漏洞:可以任意泄露内存数据
- 栈溢出漏洞:通过溢出覆盖返回地址
解题步骤
- 利用格式化字符串漏洞泄露关键地址(如libc基址、程序基址等)
- 构造ROP链或直接返回到后门函数
- 题目环境配置存在问题(ld链接器错误),但不影响解题
技术要点
- 符号表被剔除,但不影响关键地址泄露
- 只需泄露必要的几个地址即可完成利用
TWO: ret2rop
题目特点
- 包含随机数校验和异或操作的保护机制
- 需要绕过多种检查才能实现ROP
漏洞分析
- 栈溢出漏洞:在特定条件下可触发溢出
- 随机数绕过:需要将随机数固定为已知值
- 异或保护:数据经过异或处理,需要逆向逻辑
关键函数分析
snprintf(stack_steps_buf[1], 0x80u, "0x%016lx ; 0x%016lx (immediate value)", immediate, immediate);
保护绕过技术
- 随机数固定:通过溢出修改随机数生成结果为0
- 异或逻辑绕过:顺着异或逻辑操作而非硬抗
- 栈迁移技术:由于控制空间有限,需要栈迁移扩大利用空间
调试技巧
- 注意
io.interactive()的使用,避免缓冲区冲突 - 关注偏移0x10处的数据控制
- 需要正确处理栈对齐(0x20对齐)
THREE: ez2048
题目背景
- 改编自2023年的Go语言题目
- 需要逆向游戏算法实现自动化通关
解题要点
- 逆向分析:理解游戏逻辑和计分规则
- 自动化脚本:需要编写脚本实现10万分的通关要求
- 后门函数:题目中存在可直接利用的后门
关键函数
strchr函数应用:返回buf中第一个\n的下标
FOUR: heap_
漏洞类型
- 任意地址写漏洞:可修改任意内存地址
- Canary泄露:需要通过特定方式泄露canary值
利用技巧
- printf漏洞:题目中隐藏的printf功能可用于信息泄露
- 双重漏洞利用:结合任意地址写和信息泄露实现完整利用
FIVE: tcache
环境特性
- 基于glibc 2.29的tcache机制
- 新增key值检测防止double free
漏洞利用
- 限制条件:没有edit功能,只有UAF(Use-After-Free)漏洞
- 堆风水:通过精心布局堆块实现利用
- 利用方案:
- Fastbin攻击绕过保护
- House of Botcake技术
- 通过特定大小分配(0x400)控制堆块进入unsorted bin
技术要点
- tcache在2.29版本增加了安全检测机制
- 需要了解tcache源码级别的实现细节
SIX: 金丝雀的诱惑
题目特色
- 引入线程相关技术
- 基于glibc 2.35的漏洞利用
利用技术
- BSS段利用:通过BSS段进行攻击
- ret2all技术:综合运用多种返回导向编程技术
- 信息泄露:题目提供了泄露漏洞,可获取关键地址
技术价值
- 展示了glibc 2.35环境下gadget利用的进阶技巧
SEVEN: myvm
题目复杂度
- 自定义虚拟机逆向,难度较高
- 需要理解虚拟机指令集和解释器逻辑
逆向分析
- 指令集解析:5字节4字节一组的指令结构
- 结构体重建:还原虚拟机操作码和数据结构
- 栈溢出利用:虚拟机栈存在溢出漏洞
利用步骤
- BSS段利用:利用BSS段上的残留值
- Canary泄露:通过栈操作泄露canary值
- PIE和libc泄露:结合信息泄露绕过ASLR
- ROP链构造:最终实现system执行
技术难点
- 寄存器控制受限
- 需要精确计算偏移和地址
- 栈帧管理复杂,容易出错
解决方案
- 利用bss段上的固定值(如数值1)作为计算基数
- 采用位移运算优化操作
- 注意数值类型转换和内存对齐
EIGHT: stack
题目特点
- 出题人自定义的栈结构
- 需要结合信息泄露和ORW(Open-Read-Write)技术
利用方案
- PIE绕过:泄露程序基址
- 栈地址泄露:获取栈空间布局
- ORW链构造:实现flag读取和输出
NINE: box
题目类型
- 一次性格式化字符串漏洞利用
- 盲盒形式,需要动态分析
解题步骤
- 信息泄露:通过格式化字符串泄露内存布局
- 符号定位:找到exit@plt和exit@got位置
- GOT劫持:将exit@got覆盖为后门函数地址
具体计算
- exit@plt = main地址 + 偏移量(如0x401275 + 0xfffffffffffffe8b = 0x401100)
- 后门函数地址:
/bin/sh字符串所在位置
利用脚本
需要编写自动化脚本实现地址计算和漏洞利用。
通用技术总结
调试技巧
- 环境配置:注意ld版本和库文件匹配
- 断点设置:合理使用调试器断点
- 管道处理:注意输入输出缓冲区的处理
漏洞利用通用模式
- 信息泄露(地址、canary、PIE等)
- 保护绕过(ASLR、PIE、Stack Canary等)
- 控制流劫持(ROP、后门函数、shellcode等)
- 权限提升和flag获取
注意事项
- 栈对齐要求(x64架构需要0x10/0x20对齐)
- 地址随机化对抗
- 防护机制绕过技巧
- 脚本稳定性和兼容性
本教学文档涵盖了ISCTF 2029中PWN题目的核心解法和关键技术点,适合有一定基础的二进制安全学习者参考使用。