Agent 与 CTF
Agent 与 CTF
CTF 很适合用来理解 Agent,因为 CTF 题目通常目标明确、材料有限、环境可控、结果可验证。
这和真实世界安全测试不一样。真实系统有复杂业务、授权边界、影响范围和法律责任;CTF 则通常把问题压缩成一个受控挑战。Agent 在 CTF 中可以高效辅助,但这个前提不能被忘掉。
注意
本模块只讨论授权 CTF、靶场和课程环境中的 Agent 使用。
CTF 为什么适合 Agent
CTF 题目有几个特点:
| 特点 | 对 Agent 的意义 |
|---|---|
| 目标明确 | 通常是找到 flag 或证明漏洞点 |
| 材料集中 | 文件、服务、描述都围绕题目给出 |
| 可重复验证 | 命令、脚本、请求可以反复运行 |
| 方向可分类 | Web、Pwn、Crypto、Reverse 等类别较清楚 |
| 工具链成熟 | 每个方向都有常见起手工具 |
这些特点让 Skill 很有用。因为 Skill 可以把“某类题的开局动作”和“什么时候换方向”写清楚。
Agent 在 CTF 中适合做什么
Agent 最适合承担的是流程型、工具型、记录型工作。
整理材料
它可以快速列出题目文件、识别类型、提取元数据、整理题面关键词。
例如:
file *
strings chall | head
exiftool image.png这些动作不一定难,但比赛中重复出现。Agent 可以稳定执行并总结结果。
初步分类
solve-challenge 的核心用途就是分类。它根据输入材料判断应该进入哪个 Skill。
比如:
- URL 和登录页:可能进入
ctf-web - ELF 二进制:可能进入
ctf-reverse或ctf-pwn - 大整数和 Python 加密脚本:可能进入
ctf-crypto - pcap 或磁盘镜像:可能进入
ctf-forensics
写小脚本
CTF 经常需要临时脚本:解码、爆破小空间、解析格式、还原算法。Agent 可以快速生成脚本,但脚本结果必须验证。
维护解题记录
Agent 可以记录尝试过的命令、关键输出、失败原因和最终路径。解出后,ctf-writeup 能把这些整理成 WP。
Agent 不适合做什么
Agent 不适合无边界地乱试。
不好的行为包括:
- 没有证据就认定题型
- 对所有 URL 跑大范围扫描
- 长时间爆破没有限制
- 把 CTF 范围外目标纳入测试
- 跳过验证直接给 flag
- 遇到失败只换工具不换思路
提示
CTF 中的 Agent 应该像一个有记录的队友,而不是一个无限乱点的脚本。
ctf-skills 的角色
ljagiello/ctf-skills 把 CTF 经验拆成多个 Skill:
solve-challenge负责入口分类ctf-web负责 Web 方向ctf-pwn负责二进制利用ctf-crypto负责密码学ctf-reverse负责逆向ctf-forensics负责取证ctf-osint负责开源情报ctf-malware负责恶意代码分析ctf-misc负责杂项题ctf-ai-ml负责 AI/ML 题ctf-writeup负责解后整理
这些 Skill 不是互相孤立的。很多题会跨方向,例如 Web 题里有 JWT 加密弱点,Reverse 题最后需要 Crypto,Forensics 提取出恶意样本后进入 Malware。
人和 Agent 的分工
合理分工应该是:
| 人负责 | Agent 负责 |
|---|---|
| 明确授权范围 | 执行受控工具调用 |
| 判断解题方向是否合理 | 收集材料和总结线索 |
| 决定是否继续投入时间 | 写脚本并运行验证 |
| 识别题目设计意图 | 维护尝试记录 |
| 最终确认 flag 和 WP | 整理解题过程 |
Agent 的输出应该被审查,而不是直接相信。
小结
CTF 是理解 Agent 的好场景,因为它有明确目标和受控材料。ctf-skills 的价值在于把 CTF 的方向判断、工具选择和复盘流程整理成 Agent 可读的 Skill。