eliasluimeme/rainfall

GitHub: eliasluimeme/rainfall

一个基于42课程的二进制漏洞利用和逆向工程实践项目,通过14个关卡教授栈、堆、格式化字符串等经典攻击技术。

Stars: 0 | Forks: 0

# 42-Rainfall 探索在32位Linux环境下的二进制漏洞利用、逆向工程和权限提升。 ## 🌧️ 关于项目 **Rainfall** 是42课程中的一个中级系统安全项目。目标是通过发现并利用所提供的C和C++二进制程序中的漏洞,穿越14个不同的关卡(10个标准关卡和4个奖励挑战)。 每个阶段提供一个 `setuid` 二进制文件。通过利用它,你可以以队列中下一个用户的权限执行代码,最终获取密码(即“flag”)以登录并进入下一关。 ## 🧠 涵盖的概念 本仓库包含每个挑战的详细演练,完整记录了思考过程、动态/静态分析以及漏洞利用的开发。挑战涵盖了广泛的经典漏洞类型: - **Stack-based Buffer Overflows:** 通过栈溢出劫持指令指针 (EIP)。 - **Heap-based Exploitation:** 覆盖相邻的堆元数据、结构体指针和C++虚方法表 (vtable)。 - **Format String Vulnerabilities:** 滥用 `printf` 原语进行任意读写操作,包括全局偏移表 (GOT) 劫持。 - **Integer Overflows:** 通过有符号算术环绕绕过验证检查。 - **Return-to-libc (ret2libc):** 重用标准库函数如 `system()`,无需注入自定义shellcode。 - **Logic Bugs:** 发现并利用微妙的编程缺陷,例如不安全的空字节注入。 ## 📁 仓库结构 项目按每个关卡分为目录。在每个目录中,你将找到: - `walkthrough`: 一个全面的、逐步讲解的markdown文档,解释漏洞、分析阶段以及最终的可行利用。 - `source` (或 `source.c`): 易受攻击二进制文件的反编译或逆向得到的C/C++源代码。 - `flag`: 当前或下一关的密码。 ``` . ├── level0/ ├── level1/ ├── ... ├── level9/ ├── bonus0/ ├── bonus1/ ├── bonus2/ └── bonus3/ ``` ## 🛠️ 使用的工具 - **GDB & PEDA / pwndbg:** 用于动态分析、单步执行以及检查内存状态。 - **Objdump & Checksec:** 用于静态汇编分析和审计二进制保护机制 (NX, RELRO, PIE, Canaries)。 - **Ltrace:** 用于实时观察库调用。 - **Dogbolt / Hex-Rays:** 用于将x86汇编反编译为可读的C/C++伪代码。 ## ⚠️ 免责声明 本仓库仅供教育目的。这里展示的技术旨在通过探索在受控的学术环境中内存破坏和逻辑漏洞的工作原理,帮助开发者理解安全编码实践。
标签:32位Linux, Aarch64, ASN解析, C, C++, Exploit开发, Global Offset Table劫持, ret2libc, Virtual Method Table攻击, Web报告查看器, 二进制漏洞利用, 云资产清单, 协议分析, 堆元数据覆写, 堆利用, 子域名枚举, 客户端加密, 数据擦除, 整数溢出, 权限提升, 栈缓冲区溢出, 格式化字符串漏洞, 漏洞分析, 系统安全, 路径探测, 返回导向编程, 逆向工程, 逻辑漏洞