Linux PWN — Linux 二进制漏洞利用
Linux 二进制漏洞利用的专项技能。覆盖从基础原语识别到现代 glibc 堆利用和内核提权的完整技术栈。
Trigger Conditions
- 用户请求对 ELF 二进制进行漏洞利用/exploit 开发
- CTF pwn 挑战解决
- 询问堆利用、ROP 链、格式化字符串攻击、内核提权等技术
- 已有漏洞发现,需要构造 exploit
前置依赖
建议先使用 elf-analyzer 技能完成目标二进制的 triage 和安全态势评估。
本技能假定已知: 架构、链接方式、安全缓解措施状态 (RELRO/Canary/NX/PIE/seccomp)。
Tool Discovery
command -v python3 gdb checksec ROPgadget ropper one_gadget \
seccomp-tools strace pwntools 2>/dev/null | sort
# 关键后备链
# pwntools 不可用 → 手工 struct.pack + socket 编程
# ROPgadget 不可用 → ropper → objdump + grep 手工搜索 gadgets
# seccomp-tools 不可用 → strace + 手工 BPF 分析
Workflow
Step 1: 原语识别
加载 references/exploit-primitives.md。基于 elf-analyzer 提供的安全态势,识别可利用的漏洞类型和最佳利用路径。
Step 2: 利用策略选择
根据安全缓解措施组合,自动路由到最优技术:
| 条件组合 | 推荐技术 | 加载文件 |
|---|---|---|
| NX + No PIE + Partial RELRO | ret2libc / ret2dl_resolve | rop-advanced.md |
| NX + PIE + Partial RELRO | leak + ret2libc | rop-advanced.md |
| Full RELRO (glibc < 2.34) | __free_hook/__malloc_hook | heap-exploitation.md |
| Full RELRO (glibc ≥ 2.34) | House of Apple 2 / FSOP | heap-exploitation.md |
| seccomp 启用 | ROP syscall chain / 跨架构切换 | rop-advanced.md |
| 栈溢出 + Canary | leak canary → overflow | format-string-deep.md |
| 格式化字符串 | %n 写 / GOT 覆写 / .fini_array | format-string-deep.md |
| 内核模块漏洞 | heap spray → cred 篡改 | kernel-exploitation.md |
Step 3: Exploit 开发
- 编写利用脚本 (pwntools 模板)
- 本地验证 (GDB 调试)
- 远程适配 (libc 版本/地址随机化)
Step 4: 报告
记录利用链、GDB 调试要点、libc 版本适配信息。
Reference Loading Guide
| 场景 | 加载的 Reference 文件 |
|---|---|
| 漏洞类型识别 | references/exploit-primitives.md |
| 堆利用技术 | references/heap-exploitation.md |
| 高级 ROP 技术 | references/rop-advanced.md |
| 格式化字符串攻击 | references/format-string-deep.md |
| 内核提权 | references/kernel-exploitation.md |
| .ko/eBPF 内核模块 | references/kernel-modules.md |
Adjacent Skills
| 技能 | 何时使用 |
|---|---|
elf-analyzer |
需要先对二进制做 triage,获取安全态势 |
binary-reverse |
需要深入理解二进制逻辑、反混淆 |
Token Budget
- 聊天只放结论,利用脚本和调试日志写入 case/
- 两击失败即转向: 同一 exploit 路径两次失败后切换策略
- 辅助脚本持久化到 case/04-decoding/ 或 case/exploit/