Diegocan7/exploit-development
GitHub: Diegocan7/exploit-development
一个面向底层安全与漏洞研究的概念验证 exploit 合集,涵盖栈溢出、格式化字符串、受限 shellcode 等经典漏洞类型,每个项目均附带完整分析过程与自动化脚本。
Stars: 0 | Forks: 0
# 二进制漏洞利用与 Exploit 开发
本仓库包含了一系列概念验证 exploit 和技术文章,主要关注底层安全、内存损坏漏洞以及漏洞研究。这些项目涵盖了标准的 Linux x86 和 x64 环境,从经典的栈溢出到绕过严格的运行时限制和过滤机制。
每个目录都包含了 exploit 自动化脚本 (`exploit.py`)、存在漏洞的应用程序上下文,以及漏洞利用过程的详细分析步骤。
## 仓库结构与精选项目
### 1. 栈缓冲区溢出
* **漏洞分析:** 调查了存在漏洞的 `iwconfig` 无线网络实用程序版本中基于栈的缓冲区溢出漏洞。该漏洞存在于 `get_info()` 函数中,不安全的 `strcpy` 将用户提供的参数复制到固定大小的 16 字节缓冲区 (`ifr.ifr_name`) 中,而没有进行边界检查。
* **Exploit 实现:** 使用 GDB 确定了覆盖保存的返回地址 (`EIP`) 所需的确切 76 字节填充。该 exploit 构造了一个包含 100 字节 NOP 雪橇的 payload,指向一段 23 字节的标准 Linux `execve` shellcode,由于该二进制文件具有提升的权限 (`setresuid`),最终成功获取了 root shell。
* **技术文章:** [查看详细分析](./01-stack-buffer-overflow/writeup.md)
### 2. 格式化字符串攻击
* **漏洞分析:** 分析了一个基于 C 语言的聊天机器人应用程序 (`clawdbot`),其中包含一个位于 `main()` 中的格式化字符串漏洞。通过命令行参数传递的用户输入使用 `sprintf` 在中间缓冲区中进行处理,随后直接作为格式化字符串参数传入 `printf()`。
* **Exploit 实现:** 利用直接参数访问 (`%4$x`) 泄露栈内存,以计算精确的内存偏移量。由于一个全局函数指针 (`process`) 在该漏洞触发后被立即执行,因此 exploit 使用 `%hn` 说明符执行了两次目标 2 字节的内存写入。这将该指针覆写为隐藏函数 (`all_your_base_are_belong_to_us`) 的地址,重定向执行流以执行 `/bin/sh`。
* **技术文章:** [查看详细分析](./02-format-string-vulnerability/writeup.md)
### 3. 受限的自定义 Shellcode Stager
* **漏洞分析:** 处理了一个 64 位 Linux 挑战二进制文件 (`fatty-ng`),它将执行流显式转移给用户提供的输入。然而,该二进制文件实施了多项防御机制:严格的 16 字节缓冲区限制、涉及 `getchar()` 的输入挂起陷阱,以及使用 `__ctype_b_loc()` 的运行时字符过滤器,如果检测到任何 ASCII 数字 (`0x30`-`0x39`),该过滤器将终止执行。
* **Exploit 实现:** 使用多阶段方法绕过了输入限制。首先,精确填充输入缓冲区以满足 `getchar()` 的逻辑。其次,我编写了一个极简的 15 字节、无数字的 x64 汇编 stager,它能安全地将寄存器清零并调用 `read()` 系统调用。该 stager 动态地将一个无限制的 Stage 2 payload(通过 Pwntools 生成的完整 `execve` shellcode)直接读入可执行内存中,从而完全绕过了字符过滤器。
* **技术文章:** [查看详细分析](./03-constrained-shellcode-stager/writeup.md)
## 方法论与工具
这些 exploit 的开发结合了静态分析、动态调试和脚本编写:
* **逆向工程:** 使用 Ghidra 进行静态分析和反编译,以梳理出目标函数和全局变量的位置。
* **调试与排查:** 利用 GDB (GNU Debugger) 检查栈布局,计算运行时偏移量,并验证 payload 投递过程中的寄存器状态。
* **Exploit 自动化:** 自动化脚本使用 Python 3 编写,利用 `pwntools` 框架进行汇编生成、payload 打包 (`struct`) 以及远程套接字连接管理。
## 免责声明
本仓库仅出于教育目的、研究和授权的安全测试而创建。对于因本仓库中包含的信息或代码造成的任何误用、损害或非法活动,作者不承担任何责任。
标签:CVE复现, Exploit开发, GDB, Go语言工具, PoC, Shellcode, Unsafe函数, Web报告查看器, x64, x86, 二进制漏洞利用, 云资产清单, 内存破坏, 堆栈溢出, 情报收集, 技术调研, 提权, 暴力破解, 栈溢出, 格式化字符串漏洞, 漏洞复现, 漏洞研究, 缓冲区溢出, 网络安全, 逆向工程, 隐私保护