otimtt/CTFPlatform

GitHub: otimtt/CTFPlatform

基于 FastAPI 的轻量级 CTF 竞赛托管平台,提供 JWT 认证、实时记分板和题库管理功能。

Stars: 0 | Forks: 0

# CTF 平台 ![Python](https://img.shields.io/badge/Python-3.10+-3776AB?logo=python&logoColor=white) ![FastAPI](https://img.shields.io/badge/FastAPI-0.110+-009688?logo=fastapi&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-green) ![SQLite](https://img.shields.io/badge/Database-SQLite-003B57?logo=sqlite) 功能齐全的 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, 系统分析, 网络分析, 网络安全, 自动化脚本, 蓝队分析, 逆向工具, 逆向工程, 隐私保护, 靶场, 靶机环境, 黑客