NSSCTF赛事GHCTF部分题解
字数 962 2025-08-29 08:30:12
NSSCTF赛事GHCTF PWN题解教学文档
1. Hello_world 题目解析
漏洞分析
- 存在栈溢出漏洞
- 程序包含后门函数
- 开启了PIE保护机制
利用方法
- 使用gdb进行调试分析
- 发现可以通过修改返回地址的尾字节来绕过PIE保护
- 直接覆盖返回地址的低位字节指向后门函数
关键点
- PIE保护只随机化地址的高位,低位保持不变
- 通过部分覆盖可以绕过PIE保护的限制
2. ret2libc1 题目解析
漏洞分析
- shop函数存在栈溢出漏洞
- 初始只有1000 money
- 需要200000 money才能利用漏洞
利用步骤
- 发现选项7(see_it函数)可以赚钱
- 通过选项7将money增加到200000以上
- 利用两次栈溢出漏洞构造ROP链
- 最终实现ret2libc攻击
关键点
- 需要先满足money条件才能利用漏洞
- 需要构造两次栈溢出才能完成攻击
3. ret2libc2 题目解析
漏洞分析
- 缺少rdi寄存器控制
- 存在printf函数和格式化字符串漏洞
利用方法
- 将返回地址覆盖为printf函数
- 设置rax为%7$p,通过printf泄露栈内容
- 第二次read时控制rax指向有效地址
- 利用lea rax, [rbp - 0x30]指令
- 覆盖rbp为有效地址,将读入地址设置为bss段
- 进行栈迁移执行ROP链
关键点
- 利用格式化字符串漏洞泄露信息
- 通过控制rax间接控制读入地址
- 需要进行栈迁移来完成攻击
4. ret2syscall 题目解析
漏洞分析
- 程序提供栈地址
- 缺少/bin/sh字符串
利用方法
- 将/bin/sh字符串写入栈上
- 利用提供的gadget控制寄存器
- 构造syscall调用链
关键点
- 需要自行提供/bin/sh字符串
- 需要组合多个gadget完成寄存器控制
- 攻击路径较为复杂但可行
通用技巧总结
-
PIE绕过技巧:
- 部分地址覆盖
- 利用固定偏移
-
栈溢出利用:
- 多阶段利用
- 条件满足后再触发漏洞
-
格式化字符串漏洞:
- 泄露关键信息
- 结合其他漏洞使用
-
ROP链构造:
- 寄存器控制
- 栈迁移技术
- syscall调用构造
-
环境限制绕过:
- 利用程序已有功能满足条件
- 间接控制关键寄存器
这些题目展示了CTF PWN题目中常见的漏洞类型和利用技术,通过组合多种技术可以绕过现代保护机制实现攻击。