CTF Pwn 方向出题大师
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_c874bd48/ctf-pwn-challenge-master。
技能介绍
出题时真正难的是什么
Pwn 题分发的是脆弱二进制(常经 socat 跑在容器里),flag 在服务端 /flag,选手要靠漏洞拿 shell 或读文件。常见事故不是「代码写不出洞」,而是利用链断链、需要作者内幕才能过、地址或魔数凭空出现、保护组合与 glibc 版本对不上,或 seccomp/部署留下 strings 秒 flag、execve 未禁等短路。
社区里更稳妥的做法是从解法倒推:先在本地用 pwntools 跑通 leak → 构造 → 读 flag,再把题目当外壳套上;本技能把这条纪律写进流程,而不是直接「生成有漏洞的代码」。
八阶段与两道验收关
技能把产出拆成八个顺序阶段,每阶段交付物展示后须等你确认,未确认不得进入下一阶段:
- 需求采集:方向、难度、知识点、NX/PIE/Canary/RELRO、glibc、flag 取得方式(
cat /flag、orw、checker)与部署形态。 - 利用拓扑与预期解:画出从连上服务到读 flag 的链路,并对照知识库做非预期解排查(Full RELRO 却考 GOT 覆写、PIE 无 leak 等冲突会主动指出)。
- 方案规划 / 二次确认:脆弱源码里「洞」与 leak 原语、flag 放置、
socat/Docker/seccomp 结构;确认后再写代码。 - 内容制作:用
scaffold_challenge.py生成工程骨架,实现vuln.c、README(含题干)、writeup.md;flag 用占位串,真值由平台注入容器。 - 黑盒自测(Phase 6):独立利用子代理仅拿公开材料(二进制 + 配套 libc + 题干)复现 exploit,并对关键地址做来源标注与硬编码自检。
- PoC 与打洞(Phase 7):
poc/exploit.py须最小完整、无写死 flag 与运行时基址,并实跑从服务读出flag{...}。
配套 references 覆盖基础原理、经典/进阶漏洞库、多阶段链与 flag_hiding 等,按阶段按需加载。
适用边界
- 前四阶段只做设计与对齐,脆弱程序在 Phase 5 才生成;任意阶段可退回重做。
- Phase 6/7 强烈建议有 Docker、
pwntools与本地/远程一致 glibc;无法实跑须在题解中标注「未实跑,需部署后验证」。 - 面向出题与交付质检,不是替选手解题,也不保证覆盖所有架构(以 SKILL 中 ELF/x86-64 等规划为准)。
使用场景
- 校内或线上赛要新增一道 Linux x86-64 Pwn 题,需先定难度、保护组合与 glibc,再产出可 nc 的脆弱服务包
- 已选定格式化字符串 leak + 堆利用组合,要先画完整利用拓扑并列出 seccomp、strings 读 flag 等非预期通路及封堵方案
- 脆弱程序与 Dockerfile 已写好,交平台前需用仅含二进制、libc、题干的黑盒流程验证可解且无凭空地址
- 多阶段题要求选手必须先 leak 再劫持控制流,需规划 socat 监听、容器降权与 /flag 注入方式并写合并版 README
适合人员
- 高校或俱乐部 CTF 战队里负责 Pwn 命题的队员,要把「考什么漏洞」落成带构建脚本与部署说明的完整题目工程
- 安全培训机构讲师,要设计含 NX/PIE/Canary 组合的二进制实验题,并配套可给学员复现的 writeup 与 exploit 骨架
- 赛事命题组或审稿人,要求每道 Pwn 在入库前附带独立黑盒自测结论与实跑打洞的 PoC,避免断链题上线
- 有逆向出题经验但不熟 Pwn 分发形态的作者,需要按八阶段对齐「flag 在服务端 /flag」与脆弱服务而非静态二进制藏 flag