GZ::CTF
GZ::CTF 是一个基于 ASP.NET Core 的开源 CTF 平台,采用 Docker 或 K8s 作为容器部署后端,提供了可自定义的题目类型、动态容器和动态分值功能。
本项目缘起于作者认为 CTFd 的实现不优雅,动态容器配置需要采用插件的方式,且前端不好看,同时为了办校赛和帮助其他学校的同学办赛,于是自己动手写了一个。
GZ::CTF 基于 AGPLv3 协议开源,使用和修改均需遵守开源协议。
Warning: 本文档目前仍然处于编写中,如有问题或其他文档需求请加入 README 中提到的用户群。
开始部署请参考 快速上手。
特性 🛠️
-
创建高度可自定义的题目
-
题目类型:静态附件、动态附件、静态容器、动态容器
- 静态附件:共用附件,任意添加的 flag 均可提交。
- 动态附件:需要至少满足队伍数量的 flag 和附件,附件及 flag 按照队伍进行分发。
- 静态容器:共用容器模版,不下发 flag,任意添加的 flag 均可提交。
- 动态容器:自动生成并通过容器环境变量进行 flag 下发,每个队伍 flag 唯一。
-
动态分值
-
分值曲线:
其中 为原始分值、 为最低分值比例、 为难度系数、 为提交次数。前三个参数可通过自定义实现绝大部分的动态分值需求。
-
三血奖励: 平台对一二三血分别奖励 5%、3%、1% 的当前题目分值
-
-
比赛进行中可启用、禁用题目,可多次放题
-
动态 flag 中启用作弊检测,可选的 flag 模版,leet flag 功能
-
-
分组队伍得分时间线、分组积分榜
-
基于 Docker 或 K8s 的动态容器分发、管理、多种端口映射方式
-
基于 SignalR 的实时比赛通知、比赛事件和 flag 提交监控及日志监控
-
SMTP 邮件验证功能、基于 Google ReCaptchav3 的恶意注册防护
-
用户封禁、用户三级权限管理
-
可选的队伍审核、邀请码、注册邮箱限制
-
平台内 Writeup 收集、查阅、批量下载
-
可下载导出积分榜、可下载全部提交记录
-
比赛期间裁判监控、提交和主要事件日志
-
题目流量 TCP over WebSocket 代理转发、可配置流量捕获
-
基于 Redis 的集群缓存、基于 PGSQL 的数据库存储后端
-
全局配置项自定义、平台标题、备案信息
-
以及更多……