ctf-skills的solve-challenge调度器如何工作?侦察→分类路由→跨模块Pivot的5步AI解题流程拆解
【免费下载链接】ctf-skillsAgent skills for solving CTF challenges - web exploitation, binary pwn, crypto, reverse engineering, forensics, OSINT, and more项目地址: https://gitcode.com/gh_mirrors/ct/ctf-skills
ctf-skills 是一个面向 CTF 竞赛的 Agent 技能包,其中的solve-challenge 调度器是整套 AI 解题流程的总入口:它自动完成侦察(Recon)、分类路由,并在卡壳时触发跨模块 Pivot,把题目分发给 web、pwn、crypto 等 8 个专家技能模块。本文带你完整拆解这套"5步解题流程"如何运作,无需阅读源码也能快速上手。🎯
什么是 solve-challenge 调度器?
如果把 8 个 CTF 分类技能比作各领域的"专科医生",那么 solve-challenge 就是"分诊台"。它的定位很明确——
它负责初诊分诊:判断题目属于哪个方向,然后把执行权交给对应的
ctf-*技能;当类别已经明确时,也可以直接调用专科技能,跳过调度器。
调度器的完整定义在 solve-challenge/SKILL.md,它声明了可调用的工具权限(Bash、Read、Grep、Task 等),并支持用户直接以[category] [challenge-file-or-url]的形式传参触发。
5步解题流程总览
整个流程分为 5 步,外加一个可选的平台探测步骤:
| 步骤 | 名称 | 做什么 |
|---|---|---|
| Step 0 | 平台探测(可选) | 识别 CTFd 平台,切换 API 驱动模式 |
| Step 1 | Recon 侦察 | 摸清文件类型、二进制特征、远程服务行为 |
| Step 2 | Categorize 分类路由 | 按文件/关键词/服务行为判定主类别 |
| Step 3 | Invoke 调用技能 | 加载匹配的/ctf-*专家技能 |
| Step 4 | Pivot 跨模块转向 | 卡壳时换思路、换模块、找漏点 |
| Step 5 | Write-up 产出 | 调用 ctf-writeup 生成标准化战报 |
下面逐步拆解。🔍
Step 1:Recon 侦察 —— 先摸清楚你拿到的到底是什么
侦察阶段调度器会做 5 件事,顺序不能乱:
- 列文件—— 遍历题目目录,对每个文件运行
file识别真实类型 - 二进制分诊—— 用
strings、xxd | head、binwalk、checksec快速"把脉" - 抓链接—— 题目里提到的 URL 优先抓取,先获取上下文
- 连服务—— 用
nc连接远程端口,观察它的交互提示 - 读提示—— 题目描述、文件名、注释里往往藏着线索
💡 侦察的关键价值:很多题目的"表面类别"是错的。一个看着像 web 的服务,连上去发现长输入会 crash,其实是 pwn 题。
Step 2:分类路由 —— 三把尺子量出主类别
调度器用三套判据交叉验证题目类别,这是整套流程的"大脑":
📄 按文件类型判断
.pcap、.dd、.E01→ 取证(forensics).elf、.exe、无扩展名二进制 → 逆向或 pwn(有远程服务则倾向 pwn).py、.sage带数字 → 密码学(crypto)- Web URL 或 HTML/JS/PHP 源码 → web
🔑 按题目描述关键词判断
- "buffer overflow"、"ROP"、"libc" → pwn
- "RSA"、"AES"、"lattice"、"LWE" → crypto
- "XSS"、"SQL"、"JWT"、"SSRF" → web
- "malware"、"C2"、"beacon" → malware
🌐 按服务行为判断
- 端口交互提示、长输入崩溃 → pwn
- HTTP 服务 → web
- netcat 跑数学/加密题 → crypto
- netcat 给受限 shell → misc(jail 类)
这套路由机制并非拍脑袋:项目在 tests/test_skill_discoverability.py 中维护了专门的回归测试,用真实的用户提示模拟首轮路由,一旦各技能的描述"混在一起"导致误分发,测试会提前失败——保证调度器长期可靠。
Step 3:调用专家技能 —— 8 个分类各就各位
类别确定后,调度器调用对应的技能加载完整技术手册:
| 类别 | 调用技能 | 典型场景 |
|---|---|---|
| Web | /ctf-web | XSS、SQLi、SSTI、JWT、文件上传 |
| Pwn | /ctf-pwn | 栈溢出、格式化字符串、堆利用、ROP |
| Crypto | /ctf-crypto | RSA、AES、ECC、PRNG、ZKP |
| Reverse | /ctf-reverse | 二进制分析、自定义 VM、混淆代码 |
| Forensics | /ctf-forensics | 磁盘镜像、内存dump、隐写、抓包 |
| OSINT | /ctf-osint | 社交媒体、地理定位、公开档案 |
| Malware | /ctf-malware | 混淆脚本、C2 流量、PE/.NET 分析 |
| Misc | /ctf-misc | jail 逃逸、编码谜题、RF/SDR、约束求解 |
以 web 为例,ctf-web/SKILL.md 开头就要求"首轮保持简短:先映射应用、确认信任边界,再深入具体技术笔记"——每个专家技能内部都是"先侦察、再开火"的节奏。
Step 4:跨模块 Pivot —— 卡壳时的5种转向策略
这是调度器最"聪明"的部分。真实 CTF 题常常横跨多个领域,首次尝试失败时它会按以下顺序自救:
- 重审假设—— 这真是你以为的类别吗?"web 题"可能需要 crypto 技能伪造 JWT;"取证"PCAP 里可能藏着重放的 pwn 载荷
- 换模块—— 调用第二个技能处理跨领域技术点
- 找漏掉的线索—— 隐藏文件、备用端口、响应头、源码注释、图片元数据
- 降级简化—— 漏洞利用太复杂时,看看有没有默认凭据、已知 CVE、逻辑漏洞等捷径
- 检查边界情况—— off-by-one、竞态条件、整数溢出、编码错位
调度器还内置了一份常见多类别组合清单,比如:
- 🔗 Forensics + Crypto:PCAP 里是加密数据,需要密码学技能解密
- 🔗 Web + Reverse:web 题里的 WASM 或混淆 JS 需要逆向
- 🔗 Reverse + Pwn:先逆向出逻辑,再构造内存漏洞利用
- 🔗 OSINT + Stego:社媒帖子里用 Unicode 同形字编码比特位
这些模式让 Agent 不会"一条路走到黑"。各分类技能内部同样设有 "When to Pivot" 指引(如 ctf-misc/SKILL.md 中写明:若谜题核心其实是数论,就切回/ctf-crypto),形成双向的路由闭环。
Step 5:ctf-writeup 生成标准化战报
解出 flag 后,调度器调用/ctf-writeup生成竞赛提交风格的 writeup,要求:
- 带完整元数据(题目名、赛事、类别、难度、flag 格式)
- 一个从题目数据直接跑到 flag 的完整脚本,而非多个碎片代码
- 步骤精简到 1~3 步,方便队友或主办方快速验证
它的完整模板与质量检查清单在 ctf-writeup/SKILL.md。另外调度器内置了flag 校验规则:发现多个形如 flag 的字符串时视为候选项,优先选择与出题目标工件绑定的那个,并做全库唯一性检查、附来源路径,避免把"诱饵"当答案提交。🏁
快速上手:3行命令跑起来
1. 获取技能包
仓库是只读的,克隆到本地使用:
git clone https://gitcode.com/gh_mirrors/ct/ctf-skills2. 预装解题工具(赛前推荐)
bash scripts/install_ctf_tools.sh all3. 触发调度器
/solve-challenge <题目描述或URL>工具清单统一维护在 scripts/install_ctf_tools.sh;比赛期间也可以"按需安装"——每个分类技能的 SKILL.md 都带有 Prerequisites 小节,只列出该类别所需的最少工具。
小结:为什么这套调度设计值得学习
- 职责分离:调度器只管分诊与转向,技术深度全部下沉到 8 个分类模块,互不膨胀
- 多判据交叉验证:文件类型 + 描述关键词 + 服务行为三重确认,降低误路由
- Pivot 内建化:把"卡壳时怎么办"写成显式流程和组合模式清单,而非隐性经验
- 质量闭环:发现性测试(tests/test_skill_discoverability.py)守护路由准确性,writeup 技能守护产出质量
对于想给 AI Agent 构建多技能编排系统的开发者,这套"侦察 → 路由 → Pivot → 产出"的骨架是一个很好的参考模板。
【免费下载链接】ctf-skillsAgent skills for solving CTF challenges - web exploitation, binary pwn, crypto, reverse engineering, forensics, OSINT, and more项目地址: https://gitcode.com/gh_mirrors/ct/ctf-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考