mujtaba510/Capture-the-Flag-CTF
GitHub: mujtaba510/Capture-the-Flag-CTF
一个基于 React 和 Node.js 的全栈网络安全夺旗竞赛平台,提供团队协作、多分类挑战、实时排行榜和后台管理等完整的赛事运营功能。
Stars: 0 | Forks: 0
# 🏴☠️ Capture-the-Flag (CTF) 平台
一个现代化的全栈 Capture-the-Flag 网络安全竞赛平台,具备团队管理、挑战提交和管理后台功能。
## ✨ 功能
- **用户身份验证**:通过 JWT 进行安全的登录/注册,支持邮箱验证和密码重置
- **团队管理**:创建团队、发送邀请、管理加入请求
- **挑战**:多种挑战分类,并支持文件提交
- **摊位**:额外的挑战模块
- **管理后台**:管理用户、团队、挑战,并查看排行榜
- **文件上传**:支持多种文件类型(PDF、EXE、JS、Python、APK、ZIP 等)
- **排行榜**:实时计分和排名
- **Swagger API 文档**:为开发者提供的交互式 API 文档
## 🛠️ 技术栈
### 后端
- Node.js + Express 5
- TypeScript
- MongoDB + Mongoose
- JWT 身份验证
- Swagger UI
- Nodemailer
- Multer(文件上传)
- Zod(数据验证)
### 前端
- React 19 + TypeScript
- Vite
- Tailwind CSS
- Radix UI
- React Router
- TanStack React Query
- Framer Motion
- Lucide Icons
- Sonner(toast 通知)
## 📁 项目结构
```
Capture-the-Flag-CTF/
├── backend/
│ ├── config/ # Database, email, Swagger config
│ ├── controllers/ # Request handlers
│ ├── managers/ # Business logic
│ ├── middleware/ # Auth, error handling, uploads
│ ├── models/ # Mongoose schemas
│ ├── routes/ # API routes
│ ├── schemaValidation/ # Zod schemas
│ ├── services/ # Email service
│ ├── uploads/ # Uploaded files storage
│ └── utils/ # Helpers (tokens, OTP, errors)
└── frontend/
├── src/
│ ├── Dashboards/ # Admin & User dashboards
│ ├── Hook/ # Custom hooks (auth, API)
│ ├── Ui/ # UI components & pages
│ ├── components/ # Reusable components
│ ├── context/ # React context
│ └── lib/ # Utilities
└── public/ # Static assets
```
## 🚀 安装与设置
### 前置条件
- Node.js(v20+)
- MongoDB(本地或 Atlas)
- npm 或 yarn
### 后端设置
1. 进入后端目录:
cd backend
2. 安装依赖:
npm install
3. 创建 `.env` 文件并配置环境变量(见下文)
4. 启动开发服务器:
npm run dev
### 前端设置
1. 进入前端目录:
cd frontend
2. 安装依赖:
npm install
3. 启动开发服务器:
npm run dev
## 📝 环境变量
### 后端 (.env)
```
PORT=5000
MONGO_URI=
JWT_SECRET=
EMAIL_USER=
EMAIL_PASS=
# 托管 / nginx
CORS_ORIGIN=http://localhost:5173
PUBLIC_BASE_URL=http://localhost:5173
COOKIE_SAMESITE=lax
NODE_ENV=development
```
## 📖 使用说明
### API 文档
当后端服务器运行时,可以通过 `/docs` 访问 Swagger UI。
### 默认端口
- 后端:`http://localhost:5000`
- 前端:`http://localhost:5173`
## 🚀 部署
### 生产环境构建
```
# Backend
cd backend
npm run build
npm start
# Frontend
cd frontend
npm run build
```
### Nginx 配置(推荐)
- 在 `/` 路径提供构建好的前端服务
- 将 `/api/` 代理到后端(`http://127.0.0.1:5000`)
- 将 `/docs` 代理到后端(可选,用于 Swagger UI)
为生产环境更新环境变量:
```
CORS_ORIGIN=https://your-domain.com
PUBLIC_BASE_URL=https://your-domain.com
NODE_ENV=production
```
## 📄 许可证
ISC
标签:CTF平台, GNU通用公共许可证, MITM代理, Node.js, React, Syscalls, 团队协作, 竞赛系统, 网络安全, 自动化攻击, 隐私保护