比赛配置

比赛(Contest)是 CBCTF 的核心组织单元,每场比赛包含独立的题目集、队伍、排行榜和作弊检测记录。

比赛状态

状态条件说明
coming当前时间 < start比赛未开始,参赛者可加入队伍但无法看到题目
runningstart ≤ 当前时间 < start + duration比赛进行中,题目可见(非隐藏比赛)
over当前时间 ≥ start + duration比赛已结束,不再接受提交

字段参考

字段类型说明
namestring比赛名称
descriptionstring比赛介绍(支持 Markdown)
prefixstringFlag 前缀,替换 static{}/leet{}/uuid{} 的输出前缀,如 flagCTFCBCTF
sizeint最大队伍人数
startdatetime比赛开始时间
durationint比赛持续时长(秒)
bloodbool是否启用三血奖励
hiddenbool隐藏比赛(不出现在公开列表,仅邀请制)
captchabool加入队伍时是否需要验证码
victims_countint每队最大同时运行靶机数
rulesstring比赛规则(支持 Markdown)
prizes[]object奖励配置,[{amount, description}]
timelines[]object时间线,[{date, title, description}]

Flag 前缀

prefix 字段决定比赛中所有 flag 的实际输出格式:

static{content}  →  {prefix}{content}
leet{content}    →  {prefix}{随机内容}
uuid{}           →  {prefix}{uuid}

例如,prefix: "flag" 则选手提交 flag{...}prefix: "CBCTF" 则提交 CBCTF{...}

公告系统

管理员可发布公告,参赛者可在比赛公告页面实时查看。

奖励配置

[
  {
    "amount": "一等奖",
    "description": "¥5000"
  },
  {
    "amount": "二等奖",
    "description": "¥3000"
  }
]

时间线

[
  {
    "date": "2025-01-01T09:00:00Z",
    "title": "比赛开始",
    "description": ""
  },
  {
    "date": "2025-01-01T12:00:00Z",
    "title": "线上破题截止",
    "description": ""
  }
]

排行榜

比赛提供三种视图:

  • 总分排名:实时总分排序,支持队伍搜索
  • 时间线视图:各队分数随时间变化的折线图
  • 计分板(Scoreboard):横轴为队伍,纵轴为题目,展示每道题的完成情况

Writeup 管理

比赛结束后,参赛队伍可上传 Writeup(PDF 或 ZIP 格式)。管理员可从后台按队下载 Writeup。

题目管理

在比赛中,可从全局题库添加题目。添加时可覆盖以下字段(仅对本场比赛生效,不修改全局题库):

字段说明
name比赛中显示的题目名称
description比赛中显示的题目描述
category题目分类
tags题目标签
hints提示内容
hidden是否在比赛中隐藏该题目
attempt_limit提交尝试次数限制(0 表示无限制)

每个 flag 的计分参数(score_typeScoreMinScoreDecay)也在比赛层级独立配置。