SecureCTF 是一个轻量级 CTF(Capture The Flag)竞赛平台后端系统,
用于网络安全教学、小型 CTF 比赛以及安全训练环境。
该项目实现了一个 可部署、可扩展的 CTF 平台基础框架。
- 用户注册 / 登录
- JWT 身份认证
- 邮箱验证码注册
- 题目管理
- Flag 提交与判题
- 排行榜系统
- 管理员后台接口
- Docker 一键部署
- Go
- Gin Web Framework
- GORM ORM
- MySQL
- JWT
- Docker
- Docker Compose
- Nginx
graph TD
User[用户浏览器] --> Internet[Internet]
Internet --> Nginx[Nginx 反向代理]
Nginx --> Backend[SecureCTF Backend API]
Backend --> MySQL[(MySQL 数据库)]
graph TD
Router[Router] --> JWT[JWT Middleware]
JWT --> AuthHandler[Auth Handler]
JWT --> ChallengeHandler[Challenge Handler]
JWT --> SubmissionHandler[Submission Handler]
AuthHandler --> GORM
ChallengeHandler --> GORM
SubmissionHandler --> GORM
GORM --> MySQL[(MySQL)]
graph TD
User --> Internet
Internet --> NginxContainer[Nginx Container]
NginxContainer --> BackendContainer[Backend Container]
BackendContainer --> MySQLContainer[(MySQL Container)]
securectf-hub
├── backend
│ ├── config
│ ├── handler
│ ├── middleware
│ ├── model
│ ├── router
│ └── main.go
│
├── deploy
│ ├── docker-compose.yml
│ └── nginx
│
├── docs
│ ├── PRD.md
│ ├── api.md
│ ├── architecture.md
│ ├── er-diagram.md
│ └── roadmap.md
│
└── README.md
git clone https://github.com/yourname/securectf.git
cd securectf
docker compose up -d
docker ps
访问:
http://服务器IP/api/ping
POST /api/register
请求:
{
"username": "test",
"password": "123456"
}
POST /api/login
返回:
{
"token": "JWT_TOKEN"
}
GET /api/me
Header:
Authorization: Bearer TOKEN
POST /api/submit
请求:
{
"challenge_id": 1,
"flag": "flag{example}"
}
SecureCTF V1 实现以下核心模块:
- 用户系统
- 邮箱验证码
- 比赛模块
- 题目模块
- Flag 提交
- 排行榜
详细开发计划见:
docs/roadmap.md
项目完整设计文档位于:
docs/
包含:
- PRD(产品需求文档)
- API 文档
- 系统架构设计
- 数据库 ER 图
- 开发路线图
V2 计划增加:
- Docker 靶机环境
- 组队赛
- 动态 Flag
- WebSocket 实时排行榜
- 多比赛系统
MIT License
---