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, 团队协作, 竞赛系统, 网络安全, 自动化攻击, 隐私保护