NSSCTF赛事GHCTF部分题解
字数 962 2025-08-29 08:30:12

NSSCTF赛事GHCTF PWN题解教学文档

1. Hello_world 题目解析

漏洞分析

  • 存在栈溢出漏洞
  • 程序包含后门函数
  • 开启了PIE保护机制

利用方法

  1. 使用gdb进行调试分析
  2. 发现可以通过修改返回地址的尾字节来绕过PIE保护
  3. 直接覆盖返回地址的低位字节指向后门函数

关键点

  • PIE保护只随机化地址的高位,低位保持不变
  • 通过部分覆盖可以绕过PIE保护的限制

2. ret2libc1 题目解析

漏洞分析

  • shop函数存在栈溢出漏洞
  • 初始只有1000 money
  • 需要200000 money才能利用漏洞

利用步骤

  1. 发现选项7(see_it函数)可以赚钱
  2. 通过选项7将money增加到200000以上
  3. 利用两次栈溢出漏洞构造ROP链
  4. 最终实现ret2libc攻击

关键点

  • 需要先满足money条件才能利用漏洞
  • 需要构造两次栈溢出才能完成攻击

3. ret2libc2 题目解析

漏洞分析

  • 缺少rdi寄存器控制
  • 存在printf函数和格式化字符串漏洞

利用方法

  1. 将返回地址覆盖为printf函数
  2. 设置rax为%7$p,通过printf泄露栈内容
  3. 第二次read时控制rax指向有效地址
  4. 利用lea rax, [rbp - 0x30]指令
  5. 覆盖rbp为有效地址,将读入地址设置为bss段
  6. 进行栈迁移执行ROP链

关键点

  • 利用格式化字符串漏洞泄露信息
  • 通过控制rax间接控制读入地址
  • 需要进行栈迁移来完成攻击

4. ret2syscall 题目解析

漏洞分析

  • 程序提供栈地址
  • 缺少/bin/sh字符串

利用方法

  1. 将/bin/sh字符串写入栈上
  2. 利用提供的gadget控制寄存器
  3. 构造syscall调用链

关键点

  • 需要自行提供/bin/sh字符串
  • 需要组合多个gadget完成寄存器控制
  • 攻击路径较为复杂但可行

通用技巧总结

  1. PIE绕过技巧

    • 部分地址覆盖
    • 利用固定偏移
  2. 栈溢出利用

    • 多阶段利用
    • 条件满足后再触发漏洞
  3. 格式化字符串漏洞

    • 泄露关键信息
    • 结合其他漏洞使用
  4. ROP链构造

    • 寄存器控制
    • 栈迁移技术
    • syscall调用构造
  5. 环境限制绕过

    • 利用程序已有功能满足条件
    • 间接控制关键寄存器

这些题目展示了CTF PWN题目中常见的漏洞类型和利用技术,通过组合多种技术可以绕过现代保护机制实现攻击。

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题目中常见的漏洞类型和利用技术,通过组合多种技术可以绕过现代保护机制实现攻击。