| name | linux-pwn |
| description | Linux 二进制漏洞利用专项技能。覆盖栈溢出、堆利用(House of系列/FSOP/tcache/fastbin)、 高级 ROP(ret2csu/SROP/JIT-ROP)、格式化字符串深入利用、内核提权与保护绕过。 当用户请求 exploit 开发、漏洞利用、提权、CTF pwn 挑战解决时触发。
|
| allowed-tools | Bash, Read, Write, Glob, Grep, WebFetch, WebSearch |
| trust-level | L1 |
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
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/