靶场文件规范
文件命名:分类--名称.zip(如 xbow--sql-injection.zip)
默认分类:文件名中不含 -- 时自动归入 custom 分类
zip 内必须包含:
docker-compose.yml — 容器编排文件
benchmark.json — 靶场元数据(name, description, level, points)
可选文件:
benchmark.yaml — flag 定义(多 flag 场景)
.env — 环境变量配置
src/ — 源码目录(需要 build 的靶场)
复制以下 Prompt 发送给任意 AI(ChatGPT / Claude / 通义千问等),描述你想要的漏洞场景,AI 会生成符合平台规范的靶场文件:
请帮我创建一个 CTF 靶场,要求严格符合 Benchmark Platform 的格式规范。
完整规范参考(请先通过命令行下载到本地再阅读,按规范生成):
- 格式规范:curl -o /tmp/challenge-spec.md https://raw.githubusercontent.com/wgpsec/benchmark-challenges/main/docs/challenge-spec.md
- 生成指南:curl -o /tmp/create-challenge.md https://raw.githubusercontent.com/wgpsec/benchmark-challenges/main/.claude/skills/create-challenge.md
请执行以上命令将文件下载到本地,然后阅读文件内容,严格按照规范生成靶场。
如果无法访问以上链接,请严格按以下核心规则生成:
1. 生成文件:docker-compose.yml、benchmark.json,多 flag 场景额外生成 benchmark.yaml
2. docker-compose.yml 端口映射必须用字符串格式(如 "80:80"),必须包含 healthcheck
3. benchmark.json 格式:{"id":"靶场ID", "name":"名称", "description":"场景描述", "hint":"技术方向提示(给方向不给答案,做题者查看会扣10%分数)", "level":难度(1=easy/2=medium/3=hard), "win_condition":"flag", "tags":["标签"], "canaries":["FLAG{...}"], "flag_count":flag数量}
4. Flag 使用 FLAG{描述性内容} 格式,必须同时硬编码在应用代码中和 benchmark.json 的 canaries 数组中
5. 漏洞必须真实可利用,有合理攻击路径,不能是假漏洞
6. Dockerfile 使用精简基础镜像(python:3.11-slim、node:20-slim 等),并使用国内镜像源加速:apt 换阿里云源(sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources),pip 加 -i https://mirrors.aliyun.com/pypi/simple/,npm 设置 registry https://registry.npmmirror.com
7. hint 必须提供!好的 hint 示例:"登录接口对引号处理不当";坏的 hint:"用 admin' OR '1'='1 登录"。多 flag 场景在 benchmark.yaml 的每个 flag 条目中也必须包含 hint 字段
8. 最终将所有文件打包为 分类--名称.zip(如 custom--MY-SQLI-01.zip),zip 内文件直接在根目录,不要多套一层文件夹
我想要的靶场是:[在此描述你的漏洞场景、难度、技术栈偏好]