> For AI agents: the complete documentation index is available at /zh/llms.txt, the full documentation bundle is available at /zh/llms-full.txt.

# 简介


[![Telegram Group](https://img.shields.io/endpoint?color=blue&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fgzctf)](https://telegram.dog/gzctf)[![Discord](https://img.shields.io/discord/1239476909033656320?label=Discord)](https://discord.gg/dV9A6ZjVhC)[![QQ Group](https://img.shields.io/badge/QQ%20Group-903244818-blue)](https://jq.qq.com/?_wv=1027&k=muSqhF9x)

[![publish](https://github.com/GZTimeWalker/GZCTF/actions/workflows/ci.yml/badge.svg)](https://github.com/GZTimeWalker/GZCTF/actions/workflows/ci.yml)![version](https://img.shields.io/github/v/release/GZTimeWalker/GZCTF?include_prereleases&label=version)![license](https://img.shields.io/github/license/GZTimeWalker/GZCTF?color=FF5531)[![Crowdin](https://badges.crowdin.net/gzctf/localized.svg)](https://crowdin.com/project/gzctf)

GZ::CTF 是一个基于 ASP.NET Core 的开源 CTF 平台，采用 Docker 或 K8s 作为容器部署后端，提供了可自定义的题目类型、动态容器和动态分值功能。

GZ::CTF 采用双许可证：核心代码基于 AGPLv3 协议开源，部分受限组件采用独立的许可证。使用和修改均需遵守对应的许可证协议。开始部署请参考 [快速上手](/zh/guide/start/quick-start.md)。

> 本项目缘起于作者认为 CTFd 的实现不优雅，动态容器配置需要采用插件的方式，且前端不好看，同时为了办校赛和帮助其他学校的同学办赛，于是自己动手写了一个。

:::warning

**升级和迁移注意事项：**

1. 如需升级平台，只需拉取最新的镜像并重新启动，数据库迁移会自动进行。
2. 一般情况下，不支持 **降级** 操作，时间跨度过大的版本升级可能会导致数据不兼容，请做好数据备份。
3. 升级后可能会有新的配置项和文件结构变更，建议查看官方文档或咨询社区。
4. 如迁移到其他分支项目，请注意数据库结构是否存在变更，**变更后的数据库不支持回退到原始版本**。
5. 社区及官方不对数据丢失、数据不兼容等问题负责，分支项目问题请联系对应项目维护者。

:::

## 特性 🛠️

- 创建高度可自定义的题目
  - 题目类型：静态附件、动态附件、静态容器、动态容器
    - 静态附件：共用附件，任意添加的 flag 均可提交。
    - 动态附件：flag 和附件的数量至少需要满足队伍数量，附件及 flag 按照队伍进行分发。
    - 静态容器：共用容器模板，不下发 flag，任意添加的 flag 均可提交。
    - 动态容器：自动生成并通过容器环境变量进行 flag 下发，每个队伍 flag 唯一。

  - 动态分值
    - 分值曲线：

      ```math
      f(S, r, d, x) = \left \lfloor S \times \left[r + ( 1- r) \times \exp\left( \dfrac{1 - x}{d} \right) \right] \right \rfloor
      ```

      其中 $S$ 为原始分值、 $r$ 为最低分值比例、 $d$ 为难度系数、 $x$ 为提交次数。前三个参数可通过自定义实现绝大部分的动态分值需求。

    - 三血奖励：
      平台对一二三血分别奖励 5%、3%、1% 的当前题目分值

  - 比赛进行中可启用、禁用题目，可多次放题

  - 动态 flag 共享（作弊）检测、可选 flag 模板、leet flag 功能

- **分组队伍**得分时间线、分组积分榜

- 基于 **Docker 或 K8s** 的动态容器分发、管理、多种端口映射方式

- 基于 SignalR 的**实时**比赛通知、比赛事件和 flag 提交监控及日志监控

- SMTP 邮件验证功能、基于 Cloudflare Turnstile 的恶意注册防护

- 用户封禁、用户三级权限管理

- 可选的队伍审核、邀请码、注册邮箱限制

- 平台内 Writeup 收集、查阅、批量下载

- 可下载导出积分榜、可下载全部提交记录

- 比赛期间裁判监控、提交和主要事件日志

- 题目流量 **TCP over WebSocket 代理转发**、可配置流量捕获

- 基于 Redis 的集群缓存、基于 PGSQL 的数据库存储后端

- 支持本地文件系统和 **对象存储 (MinIO, S3 等)** 作为文件存储后端

- 支持暗黑模式、多国语言、自定义主题颜色

- 支持 **网站页脚**、**网站图标** 和 **HTML 描述** 的自定义，以提升 SEO

- 全局配置项自定义、平台标题、备案信息

- 支持指标和分布式追踪

- 以及更多……

## Stars ✨

[![Stargazers over time](https://starchart.cc/GZTimeWalker/GZCTF.svg?variant=adaptive)](https://starchart.cc/GZTimeWalker/GZCTF)

## Grafana 📊

![grafana.webp](/images/grafana.webp)

## Demo 🗿

![index.webp](/images/index.webp)

![game.list.webp](/images/game.list.webp)

![game.challenges.webp](/images/game.challenges.webp)

![game.scoreboard.webp](/images/game.scoreboard.webp)

![admin.settings.webp](/images/admin.settings.webp)

![admin.challenges.webp](/images/admin.challenges.webp)

![admin.challenge.info.webp](/images/admin.challenge.info.webp)

![admin.challenge.flags.webp](/images/admin.challenge.flags.webp)

![admin.game.info.webp](/images/admin.game.info.webp)

![admin.game.review.webp](/images/admin.game.review.webp)

![admin.game.divisions.webp](/images/admin.game.divisions.webp)

![admin.teams.webp](/images/admin.teams.webp)

![admin.instances.webp](/images/admin.instances.webp)

![monitor.game.events.webp](/images/monitor.game.events.webp)

![monitor.game.submissions.webp](/images/monitor.game.submissions.webp)
