二进制漏洞利用入门:awesome-pentest-cheat-sheets中的Exploit Development一图流与pwndbg技巧
二进制漏洞利用入门:awesome-pentest-cheat-sheets中的Exploit Development一图流与pwndbg技巧
awesome-pentest-cheat-sheets 是一个社区维护的开源渗透测试作弊表合集(Collection of cheat sheets useful for pentesting),其中的二进制漏洞利用(Binary Exploitation)资源是新手从"只会扫描"走向"会写 Exploit"的捷径。本文带你用一张图快速掌握 Exploit Development 核心流程,并学会 pwndbg 的关键调试技巧。
🧩 1分钟看懂:二进制漏洞利用在做什么
二进制漏洞利用(Exploit Development)的核心目标只有一个:让目标程序按你的意图执行代码。新手先记住这条主线即可:
- 找漏洞:最常见的是栈溢出(Stack Overflow)、格式串漏洞、堆溢出;
- 看防护:用
checksec检查目标的 PIE、RELRO、Canary、NX、ASLR 等保护机制,防护越弱越容易利用; - 精确定位:算出从输入到返回地址的偏移量(offset);
- 构造 payload:填充器 + 覆盖返回地址 + gadgets/Shellcode;
- 拿到 Shell:调试器里验证,再用 pwntools 自动化利用。
上图正是按这条流程组织的"一图流",适合打印贴在显示器旁边。
📸 一图流怎么读:6 个板块逐个击破
@ovid 的这张 Exploit Development Cheat Sheet(项目收录于 docs/pentest-exploit-dev-cheatsheet.jpg)信息密度很高,建议按以下顺序阅读:
- x86/x64 寄存器速查(左上):EAX、EBX、ESP(栈指针)、EBP(帧指针)等寄存器的用途,32 位寄存器表一应俱全,读汇编时不再来回翻;
- x86 操作码表(中左):
NOP(0x90,填充 NOP Sled 必用)、JMP/CALL、INT 3等关键指令的机器码; - GDB 命令组(中部):
x查看内存、si/ni单步等最常用命令; - pwndbg 命令组(右侧):
context、pie、ipi、search-asm、search-pattern等增强调试命令,详见下节; - pwntools Python API(中下):
process()、remote()、cyclic、recvuntil()、p64/p32/p8、hexdump等写 Exploit 脚本的高频函数; - 格式串漏洞速查(右下):
%x、%n、%s等说明符的读/写能力,以及常见 Shellcode 片段。
💡 阅读技巧:第一次看只关注"寄存器 + GDB/pwndbg 命令 + pwntools API"三块,其余用到再查,避免信息过载。
🐞 pwndbg 调试技巧:让 GDB 不再难用
pwndbg 是 GDB 的增强插件,能自动打印寄存器、栈、堆等上下文,是二进制漏洞利用的事实标准工具。一图流右侧列出的常用命令,新手优先掌握这几个:
| 命令 | 用途 |
|---|---|
context |
显示完整上下文(寄存器、栈、代码),每次断点停下先看它 |
pie |
查看 PIE 基地址,计算运行时地址必备 |
ipi / ipih |
显示当前/指定地址处的指令反汇编 |
search-asm |
按汇编指令搜索内存,找 gadget 神器 |
search-pattern |
按字节模式搜索,定位 padding 结束位置 |
checksec |
一键检查二进制安全属性(PIE/RELRO/Canary 等) |
配合项目 README.md 中 Binary Exploitation 章节(第192行起)收录的 pwndbg、PEDA、checksec.py 等参考资料,可以构建完整的本地调试环境。
🛠️ 从调试到自动化:用 pwntools 写出你的第一个 Exploit
在 GDB/pwndbg 里验证成功后,通常用 Python + pwntools 把利用过程写成脚本(偏移计算、payload 生成、与目标交互)。写脚本时的常用套路都在一图流中:
cyclic(n)生成填充串,cyclic_find()反查偏移;p64()/p32()/p8()把地址打包成小端字节;process()本地运行、remote()连接远程目标;recvuntil()等待目标回显再发送下一段 payload。
项目还内置了一份可复用代码清单 docs/python-snippets.md,包含文件读写、命令行参数解析(argparse)等现成片段,写 Exploit 脚本时可以直接搬。
🧭 延伸:从 Get Shell 到完整渗透流程
拿到 Shell 只是开始。awesome-pentest-cheat-sheets 的价值在于把渗透各阶段都备好了速查表,你可以无缝衔接:
- 后渗透:Metasploit Cheat Sheet 与图片版 docs/Metasploit-CheatSheet.png,常用模块与 payload 一查即得;
- 端口与服务扫描:docs/nmap.md 收录了 DNS 爆破、HTTP 枚举等 Nmap 脚本命令;
- Web 侧漏洞:docs/sqlmap-cheatsheet-1.0-SDB.pdf 与 Wireshark 显示过滤器 docs/Wireshark_Display_Filters.pdf。
✅ 快速上手:3 步开始练习
- 获取项目:
git clone https://gitcode.com/gh_mirrors/awe/awesome-pentest-cheat-sheets; - 打开一图流:查看 docs/pentest-exploit-dev-cheatsheet.jpg,建议打印后贴在工作区;
- 动手实践:准备一个开启了漏洞的练习程序,
checksec看防护 → pwndbg 单步调试找偏移 → pwntools 写脚本验证,全程命令都在这张图里。
📚 项目文件资料速查
| 文件 | 说明 |
|---|---|
| README.md | 全量作弊表总目录,含 Binary Exploitation 章节 |
| docs/pentest-exploit-dev-cheatsheet.jpg | Exploit Development 一图流(本文主角) |
| docs/python-snippets.md | Python 可复用代码片段 |
| docs/nmap.md | Nmap 脚本命令速查 |
| docs/Metasploit-CheatSheet.png | Metasploit 速查(图片版) |
| docs/sqlmap-cheatsheet-1.0-SDB.pdf | SQLmap 速查(PDF) |
| docs/Wireshark_Display_Filters.pdf | Wireshark 显示过滤器(PDF) |
📌 小建议:二进制漏洞利用门槛不低,先用一图流 + pwndbg 打通"溢出 → 调试 → 脚本"的最小闭环,再回头逐板块深挖,学习曲线会平缓很多。

