jdecorte-be/binary-exploitation
GitHub: jdecorte-be/binary-exploitation
一套面向教学的二进制漏洞利用挑战集,提供源码、二进制文件和详细教程,系统覆盖栈溢出、格式化字符串等核心利用技术。
Stars: 1 | Forks: 0
通过这套精心策划的二进制漏洞利用挑战集,深入探索软件安全的世界。本仓库旨在作为实战演练场,提供逆向工程、漏洞分析和漏洞利用开发方面的动手实践经验。每个挑战都是独立的,提供了易受攻击的 C 源代码、编译后的二进制文件以及指导学习的详细教程。
## 涵盖的核心概念
这些挑战旨在为二进制漏洞利用的核心概念打下坚实基础,包括:
* **栈溢出:** 学习通过覆盖栈来控制程序执行流程。
* **逆向工程:** 分析编译后的二进制文件,以理解其功能并发现弱点。
* **漏洞利用开发:** 编写脚本以可靠地利用漏洞并获得控制权。
* **Shellcoding:** 构建并注入自定义 payload 以实现任意代码执行。
* **格式化字符串漏洞:** 滥用格式化字符串函数,从任意内存位置读取或向其写入数据。
* **绕过安全缓解措施:** 理解并规避基本的安全保护机制。
## 开始使用
为了有效地解决这些挑战,你需要一个合适的环境和一些必要的工具。强烈推荐使用 32 位的 Linux 虚拟机,因为这些二进制文件是为该架构编译的。
### 推荐工具
* **操作系统:** 基于 Debian 的 32 位 Linux 发行版(例如 Ubuntu 18.04 32-bit, Kali Linux)。
* **调试器:** GDB (The GNU Project Debugger),并辅以 [GEF](https://github.com/hugsy/gef)、[pwndbg](https://github.com/pwndbg/pwndbg) 或 [PEDA](https://github.com/longld/peda) 等插件进行增强。
* **编译器:** GCC,用于编译任何辅助代码或 shellcode。
* **漏洞利用框架:** 带有 [pwntools](https://github.com/Gallopsled/pwntools) 库的 Python 3 是现代漏洞利用开发的标准配置。
## 如何应对挑战
每个挑战都设计为一个独立的学习模块。请遵循以下步骤进行系统化学习:
1. **选择挑战:** 从 `override/level00` 开始,按顺序进行。
2. **分析源代码:** 阅读 `source.c` 文件以了解程序的预期行为,并识别潜在的逻辑缺陷或漏洞。
3. **调试二进制文件:** 使用 GDB 单步执行程序。检查栈、寄存器和内存,以确认你的理解并规划漏洞利用方案。
4. **开发漏洞利用程序:** 编写脚本(例如使用 Python 和 pwntools),向易受攻击的二进制文件发送精心构造的 payload。
5. **获取 Flag:** 运行你的漏洞利用程序,成功控制程序并读取 `flag` 文件的内容。如果遇到困难,`walkthrough.md` 提供了提示和完整的解决方案。
## 仓库结构
挑战分为两个系列:`override` 和 `rainfall`。每个挑战目录都遵循一致的布局:
* `source.c`:易受攻击的 C 源代码。
* `flag`:成功利用后需要读取的目标文件。
* `walkthrough.md`:解释漏洞和利用过程的分步指南。
* `Ressources/`:包含编译后的二进制文件和任何辅助文件(例如漏洞利用脚本、辅助代码)。
## 挑战索引
### Override 系列
该系列包含核心挑战集,难度逐渐增加。
| 挑战 | 目录 | 源代码 | 教程 |
| :-------- | :--------------------------------------- | :--------------------------------------- | :----------------------------------------- |
| `level00` | [`override/level00`](./override/level00) | [`source.c`](./override/level00/source.c) | [`walkthrough.md`](./override/level00/walkthrough.md) |
| `level01` | [`override/level01`](./override/level01) | [`source.c`](./override/level01/source.c) | [`walkthrough.md`](./override/level01/walkthrough.md) |
| `level02` | [`override/level02`](./override/level02) | [`source.c`](./override/level02/source.c) | [`walkthrough.md`](./override/level02/walkthrough.md) |
| `level03` | [`override/level03`](./override/level03) | [`source.c`](./override/level03/source.c) | [`walkthrough.md`](./override/level03/walkthrough.md) |
| `level04` | [`override/level04`](./override/level04) | [`source.c`](./override/level04/source.c) | [`walkthrough.md`](./override/level04/walkthrough.md) |
| `level05` | [`override/level05`](./override/level05) | [`source.c`](./override/level05/source.c) | [`walkthrough.md`](./override/level05/walkthrough.md) |
| `level06` | [`override/level06`](./override/level06) | [`source.c`](./override/level06/source.c) | [`walkthrough.md`](./override/level06/walkthrough.md) |
| `level07` | [`override/level07`](./override/level07) | [`source.c`](./override/level07/source.c) | [`walkthrough.md`](./override/level07/walkthrough.md) |
| `level08` | [`override/level08`](./override/level08) | [`source.c`](./override/level08/source.c) | [`walkthrough.md`](./override/level08/walkthrough.md) |
| `level09` | [`override/level09`](./override/level09) | [`source.c`](./override/level09/source.c) | [`walkthrough.md`](./override/level09/walkthrough.md) |
### Rainfall 系列
该系列包含探索不同或更复杂概念的额外挑战。
| 挑战 | 目录 | 源代码 | 教程 |
| :-------- | :------------------------------------- | :------------------------------------- | :--------------------------------------- |
| `bonus0` | [`rainfall/bonus0`](./rainfall/bonus0) | [`source.c`](./rainfall/bonus0/source.c) | [`walkthrough.md`](./rainfall/bonus0/walkthrough.md) |
| `bonus1` | [`rainfall/bonus1`](./rainfall/bonus1) | [`source.c`](./rainfall/bonus1/source.c) | [`walkthrough.md`](./rainfall/bonus1/walkthrough.md) |
| `bonus2` | [`rainfall/bonus2`](./rainfall/bonus2) | [`source.c`](./rainfall/bonus2/source.c) | [`walkthrough.md`](./rainfall/bonus2/walkthrough.md) |
## 许可证
本项目采用 MIT 许可证授权。有关详细信息,请参阅 [LICENSE](./LICENSE) 文件。
标签:42School, CTF挑战, CTF教程, DNS 反向解析, PWN, TLS抓取, Web报告查看器, x86_64架构, 二进制漏洞利用, 云资产清单, 客户端加密, 教育资源, 源码分析, 漏洞修复, 漏洞分析, 漏洞攻防, 缓冲区溢出, 网络安全培训, 路径探测, 软件安全, 逆向工具, 逆向工程