课程大纲
1. **二进制漏洞与 PWN 基础理论(1小时)**
- 内容覆盖:
- 二进制程序结构概述:ELF/PE 文件格式、内存布局(栈、堆、数据段、代码段)
- 常见漏洞类型简介:缓冲区溢出、格式化字符串、整数溢出、堆溢出等
- PWN 攻击流程与基本原理(漏洞发现、利用、提权)
- 技术展示:
- 安装GDB+Pwntools/IDA Pro
- 配置QEMU模拟器与Docker漏洞靶机
- 使用 IDA Pro/ghidra 展示简单二进制程序结构解析
2. **漏洞挖掘与逆向分析方法(2小时)**
- 内容覆盖:
- 静态分析:利用 IDA Pro、Ghidra 对二进制代码进行逆向理解
- 动态调试:GDB、pwndbg、gef 工具的高效使用方法
- 漏洞挖掘的基本技巧(输入验证、内存管理漏洞检测)
- **栈溢出原理与利用**
- 函数调用栈结构、Shellcode编写
- 绕过Canary与ASLR(Ret2Libc、ROP链构造)
- 实战演练:
- 分析一个经典练习题(如简单的缓冲区溢出程序),从二进制中定位漏洞
- 手把手演示调试与代码跟踪
- 案例:攻破经典栈溢出题目(如pwnable.kr的`bof`)
3. **漏洞利用技巧与高级攻击(4小时)**
- 内容覆盖:
- 利用缓冲区溢出构造攻击:返回地址覆盖、NOP 滑板、shellcode 注入
- 进阶利用:ROP(Return-Oriented Programming)技术、ret2libc 攻击
- 防御机制简介:ASLR、NX、Stack Canaries 及绕过方法
- **堆管理机制**
- Glibc堆结构(chunk、bins、tcache)
- Use-After-Free(UAF)、Double Free漏洞分析
- **实战:House of系列利用技术**
- House of Force/Spirit攻击演示
- 案例:攻破含堆溢出的CTF题目(如`heapstorm`)
- **Fuzzing与漏洞发现**(1小时)
- AFL++工具使用与覆盖率引导
- 案例:挖掘真实软件(如老旧版本FTP服务)漏洞
- **二进制补丁比对与1day分析**(1小时)
- 使用BinDiff分析补丁差异
- 从补丁反推漏洞原理(CVE-2024复现)
- 实战演练:
- 指导学员构造针对给定漏洞的利用代码
- 现场调试和验证利用效果
4. **CTF 比赛技能与综合案例解析(1小时)**
- 内容覆盖:
- 常见 CTF PWN 题型解析与解题思路分享
- 如何快速定位漏洞点、构造利用链
- 团队协作与赛题分析技巧(题目拆解、信息提取与验证)
- 实战演练:
- 分析历年 CTF 中经典 PWN 题目
- 小组讨论并现场复现部分题目的漏洞利用过程
5. **综合实战演练与答疑(1小时)**
- 内容覆盖:
- 提供一个完整的二进制漏洞挑战环境(可基于虚拟机或在线平台)
- 从漏洞挖掘、利用构造到漏洞修复的完整流程演练
- 现场答疑,探讨实际项目中遇到的疑难问题
- 实战演练:
- 分发一款定制的 PWN 挑战题,学员独立或小组完成漏洞分析与利用
- 利用 pwntools 编写自动化利用脚本,展示赛题解法和攻防思路