简介
CBCTF 是由 0RAYS 开发的 Kubernetes 原生 CTF 竞赛平台。平台使用 Go 语言编写, 将 React 前端嵌入单一二进制, 部署简单, 同时深度集成 Kubernetes, 支持动态容器靶机、VPC 网络隔离、流量捕获等高级功能。
核心功能
| 功能 | 静态题 | 动态附件题 | 容器题 |
|---|---|---|---|
| 共享附件 | ✓ | — | ✓ |
| 动态附件(per-team) | — | ✓ | — |
| 静态 Flag | ✓ | ✓ | ✓ |
| 动态 Flag | — | ✓ | ✓ |
| UUID Flag | — | ✓ | ✓ |
| 容器靶机 | — | — | ✓ |
| Pod 网络 | — | — | ✓ |
| VPC 网络隔离 | — | — | ✓ |
| 流量捕获 | — | — | ✓ |
| 需要 Kubernetes | — | ✓ | ✓ |
架构
CBCTF 后端采用 Go 1.26 + Gin 框架, 前端使用 React 19 + Vite 7, 生产构建产物通过 go:embed 嵌入 Go 二进制。平台运行时依赖 PostgreSQL 存储数据、Redis 缓存与任务队列, 并通过 client-go 与 Kubernetes 集群交互以管理容器靶机。
依赖说明
| 组件 | 版本要求 | 用途 |
|---|---|---|
| PostgreSQL | 16+ | 主数据存储 |
| Redis | 6.0+ | 缓存、Asynq 任务队列 |
| Kubernetes | 1.20+ | 动态附件生成、容器靶机 |
| KubeOVN | 推荐 v1.16+ | VPC 网络隔离(可选) |
| Multus CNI | 最新稳定版 | 多网卡支持, VPC 模式必须(可选) |
Kubernetes、KubeOVN 和 Multus 仅在使用动态附件题或容器题时需要。若仅使用静态题, 只需 PostgreSQL 和 Redis。
技术栈
| 层 | 技术 |
|---|---|
| 后端语言 | Go 1.26 |
| Web 框架 | Gin v1.12 |
| 前端框架 | React 19 + Vite 7 |
| 任务队列 | Asynq v0.26(基于 Redis) |
| ORM | GORM v1.31 + PostgreSQL 驱动 |
| K8s SDK | client-go v0.35 |
| 网络隔离 | KubeOVN + Multus CNI |
| 认证 | JWT(golang-jwt/jwt v5)+ 设备指纹 |
| 流量捕获 | gopacket v1.5(需 libpcap) |
| 地理信息 | MaxMind GeoLite2-City |