介绍
CBCTF 是由 0RAYS 维护的 CTF 竞赛平台,基于 Go 语言构建,原生支持 Kubernetes 编排。平台支持动态附件生成、动态容器分发、容器与虚拟机混合部署、网络渗透场景构建等特性。
功能特性
题目类型
每道题目均可配置多个 flag,每个 flag 独立计分。
Flag 类型
flag 前缀可在赛事设置中自定义(默认 CBCTF):
平台能力
- 动态分值 — 一二三血额外获得题目分值的 5% / 3% / 1%
- Frp 内网穿透 — 容器端口转发,保留原始客户端 IP
- SMTP 邮件验证 — 注册验证与密码找回
- Writeup 管理 — 支持收集与批量下载
- OAuth / OIDC — 第三方认证,支持用户组自动分配
- 平台品牌化 — Logo、名称、首页文案等全局配置
- 可重载配置 — 多数运行配置可在线保存,并通过管理后台重启重载
- Webhook — GET / POST
- 国际化(i18n) — 多语言界面支持
- Prometheus 监控 — 完整的运行时指标暴露
- Redis 缓存 / 任务队列 + PostgreSQL 数据存储 + NFS 网络存储
开始使用
管理员可按快速上手准备集群、安装平台并创建第一场比赛。已加入平台的选手可直接阅读选手操作流程。
动态容器
网络模式
创建容器题时,通过 Compose 配置选择网络模式:
配置示例
Pod 模式
VPC 模式(含 KubeVirt 虚拟机)
动态附件
基于 Kubernetes 容器化生成,支持上传 Python 脚本,在隔离环境中为每个队伍生成唯一附件。
出题准备:
- 容器必须包含
sleep和unzip - 脚本路径固定为
/root/run.sh <team_id> <base64_encoded_flags> - 产物须写入
/root/mnt/attachments/{id}.zip - 脚本完成后,队伍可在题目页面下载生成的附件
- 建议使用固定镜像版本或 digest,保持比赛期间的环境一致
Kubernetes 依赖
平台部署在 Kubernetes 集群内,额外组件按题型选择:
许可证
本项目采用 GNU Affero General Public License v3.0 开源协议。
