Skip to content

FloatCTF/floatctf-challenge-creator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

FloatCTF Challenge Creator

将 Claude Code 变成一个专门的 CTF 出题助手,为 FloatCTF 平台自动创建 CTF 赛题。

支持 Web / Crypto / Misc / Pwn / Reverse / AI 六大类别,涵盖静态题目与 Docker 动态题目。

功能

  • 一键创建题目骨架(fcmc gen) — 自动生成目录结构、meta.tomlDockerfileflag.shentrypoint.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 会按以下步骤与你协作:

  1. 确认题目需求 — 名称、分类、分值、描述、Flag 类型、Docker 端口
  2. fcmc gen 创建题目骨架 — 只传入题目名,生成后手动移动到对应分类目录(如 Web/Crypto/
  3. 修改 meta.toml — 调整 fcmc gen 已生成的基础配置
  4. 编写题目源码 — 在 src/ 目录中编写核心解题逻辑
  5. fcmc build 构建镜像 — 构建 Docker 镜像(可选,fcmc check 也会自动构建)
  6. fcmc check 验证 — 解析配置、构建镜像、启动容器、提供访问地址
  7. 复现拿 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.tomlname、Docker image_tag 三者保持一致
  • 使用小写字母和下划线命名:web_shellrsa_attack
  • Flag 格式统一为 flag{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}(UUID 风格)
  • 动态题目必须使用 flag.sh + entrypoint.sh 固定模板
  • Flag 占位文件内容固定为 flag{test_flag}
  • 使用 fcmc build 构建镜像,用 fcmc check 验证并通过复现拿到 flag

相关项目

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors