将 Claude Code 变成一个专门的 CTF 出题助手,为 FloatCTF 平台自动创建 CTF 赛题。
支持 Web / Crypto / Misc / Pwn / Reverse / AI 六大类别,涵盖静态题目与 Docker 动态题目。
- 一键创建题目骨架(fcmc gen) — 自动生成目录结构、
meta.toml、Dockerfile、flag.sh、entrypoint.sh - 构建 Docker 镜像(fcmc build) — 使用 fcmc 构建题目容器镜像
- 出题规范检查(fcmc check) — 验证 meta.toml 配置、构建镜像、启动容器、提供访问地址,一站式完成
- 支持六大赛题类型 — Web、Crypto、Misc、Pwn、Reverse、AI
- 静态 & 动态 Flag 双模式 — 静态题目直接写入 flag,Docker 动态题目使用环境变量注入
- 附件管理 — 自动处理
attachment/目录与压缩打包 - 常用容器模板 — php:5-apache、Python/Flask、Ubuntu+xinetd(Pwn)开箱即用
- Claude Code(CLI 工具)
- fcmc(FloatCTF 题目检查工具,
cargo install fcmc) - Docker(Docker 动态题目需要)
将本仓库克隆到本地:
git clone https://github.com/FloatCTF/floatctf-challenge-creator.git然后在你的题目项目(如 floatctf-challenges)根目录下创建或编辑 CLAUDE.md,添加以下内容:
Skills:
- path: /path/to/floatctf-challenge-creator这样在该项目中工作时,Claude Code 会自动加载此技能。你也可以在 ~/.claude/CLAUDE.md 中配置,使其全局生效。
在 Claude Code 中输入以下任意一条指令即可触发:
帮我为 FloatCTF 出一道 SQL 注入的 Web 题
出一套 RSA 相关的 Crypto 题目
做一个栈溢出的 Pwn 题目
为 FloatCTF 出一题
触发技能后,Claude Code 会按以下步骤与你协作:
- 确认题目需求 — 名称、分类、分值、描述、Flag 类型、Docker 端口
- fcmc gen 创建题目骨架 — 只传入题目名,生成后手动移动到对应分类目录(如
Web/、Crypto/) - 修改 meta.toml — 调整 fcmc gen 已生成的基础配置
- 编写题目源码 — 在 src/ 目录中编写核心解题逻辑
- fcmc build 构建镜像 — 构建 Docker 镜像(可选,fcmc check 也会自动构建)
- fcmc check 验证 — 解析配置、构建镜像、启动容器、提供访问地址
- 复现拿 Flag — 按解题路径攻击,成功获取 flag
使用 fcmc gen 生成的题目目录结构如下(生成后需手动移动到 {Category}/ 下):
{challenge_name}/
├── meta.toml # 题目配置文件
├── attachment/ # 附件(可选)
│ └── xxx.zip
└── src/ # Docker 题目源码(可选)
├── Dockerfile
├── flag.sh # 动态 Flag 替换脚本
├── entrypoint.sh # 容器入口脚本
├── flag # 占位 flag(flag{test_flag})
└── ... # 题目源码
- 使用
fcmc gen创建题目骨架,确保目录结构和配置文件正确 - 文件夹名、
meta.toml中name、Dockerimage_tag三者保持一致 - 使用小写字母和下划线命名:
web_shell、rsa_attack - Flag 格式统一为
flag{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}(UUID 风格) - 动态题目必须使用
flag.sh+entrypoint.sh固定模板 - Flag 占位文件内容固定为
flag{test_flag} - 使用
fcmc build构建镜像,用fcmc check验证并通过复现拿到 flag
- FloatCTF Challenges — FloatCTF 赛题仓库
- fcmc — FloatCTF 题目检查与构建工具
- Challenge Template — 赛题模板参考
MIT