otimtt/CTFPlatform
GitHub: otimtt/CTFPlatform
基于 FastAPI 的轻量级 CTF 竞赛托管平台,提供 JWT 认证、实时记分板和题库管理功能。
Stars: 0 | Forks: 0
# CTF 平台




功能齐全的 Capture The Flag 托管平台。部署挑战、管理用户、追踪得分并运行比赛——所有这些只需一个 Python 文件即可完成。
## 功能特性
- **JWT 身份验证** — 注册、登录、24 小时会话
- **10 个内置挑战**,涵盖 6 个类别
- **Flag 提交**采用 HMAC 恒定时间比较(防止时序攻击)
- 每个挑战的**First Blood(一血)**检测
- **提示系统** — 每个挑战的提示,按用户跟踪解锁状态
- **实时记分板** — 每 15 秒自动刷新
- **Admin API** — 创建/删除挑战、查看统计信息
- **黑客风暗色 UI** — 响应式设计,无框架依赖
- **用户独立密码盐** — 使用 PBKDF2-SHA256 进行 200k 次迭代
## 快速开始
```
git clone https://github.com/yourusername/ctf-platform
cd ctf-platform
pip install -r requirements.txt
python app.py
```
打开 `http://localhost:8000`
默认管理员凭据:`admin` / `admin123`
## 环境变量
| 变量 | 描述 | 默认值 |
|----------|-------------|---------|
| `CTF_SECRET` | JWT 签名密钥 | 随机(重启时更改) |
在生产环境中,请务必设置一个持久的 `CTF_SECRET`:
```
export CTF_SECRET="your-long-random-secret-here"
python app.py
```
## 内置挑战
| 标题 | 类别 | 分值 | 难度 |
|-------|----------|--------|------------|
| Hello World | Misc | 50 | 简单 |
| Base What? | Crypto | 100 | 简单 |
| ROT13 Me | Crypto | 100 | 简单 |
| Reverse Me | Reversing | 200 | 简单 |
| XSS Basics | Web | 200 | 简单 |
| Packet Peek | Network | 150 | 简单 |
| Cookie Monster | Web | 200 | 中等 |
| Hidden in Plain Sight | Forensics | 250 | 中等 |
| SQL Sleuth | Web | 300 | 中等 |
| Hash Clash | Crypto | 350 | 困难 |
## API 参考
### 认证
```
POST /api/auth/register { username, password, team?, country? }
POST /api/auth/login form: username + password → { access_token }
GET /api/auth/me → user profile
```
### 挑战
```
GET /api/challenges → list all (marks solved if authenticated)
POST /api/challenges/{id}/submit { flag } → { correct, message, first_blood }
GET /api/challenges/{id}/hint/{n} → { hint }
```
### 记分板
```
GET /api/scoreboard → ranked user list
GET /api/scoreboard/categories → solve stats by category
```
### Admin(需要管理员 token)
```
POST /api/admin/challenges create challenge
DELETE /api/admin/challenges/{id} delete challenge
GET /api/admin/stats users / challenges / solves count
```
## 技术栈
- **Backend**: FastAPI + Uvicorn
- **Database**: SQLite (WAL mode)
- **Auth**: JWT (PyJWT, HS256)
- **Frontend**: Vanilla JS + CSS (无框架)
- **Templates**: Jinja2
## 许可证
MIT © Timoteo Silva
标签:AV绕过, CISA项目, CTF平台, FastAPI, HMAC, InfoSec, JWT认证, OPA, PBKDF2, Python, SQLite, Web安全, XSS, 云资产清单, 单文件部署, 哈希安全, 夺旗赛, 安全教育, 安全测试, 安全竞赛, 实时记分板, 密码学, 手动系统调用, 攻击性安全, 数字取证, 无后门, 漏洞情报, 管理员API, 系统分析, 网络分析, 网络安全, 自动化脚本, 蓝队分析, 逆向工具, 逆向工程, 隐私保护, 靶场, 靶机环境, 黑客