Flag 规则
CBCTF 支持三种 flag 类型,每道题可配置多个 flag,每个 flag 独立计分。
Flag 类型
Info
flag 的实际前缀由比赛配置中的 prefix 字段决定,而非固定为 CBCTF。
静态 Flag
所有队伍的 flag 内容相同。适用于所有题目类型。
动态 Flag
基于模板随机替换字符,保持可读性。生成结果的长度可能与模板长度不同,题目设计中不得依赖 flag 长度。
UUID Flag
标准 UUID v4 格式,长度固定,每队不同。
Flag 注入方式
动态附件题
平台自动调用生成器容器中的 /root/run.sh 脚本,将 flag 作为参数传入:
示例(team_id=1,两个 flag):
其中第二个参数为 base64(base64("CBCTF{flag1}") + "," + base64("CBCTF{flag2}")) 的结果。
Flag 生成时机
队伍的 flag 仅在初始化(init)或重置(reset)时生成,容器重启不重新生成 flag。
- 选手重启容器不会改变 flag
- 选手执行「重置题目」时会生成新 flag,旧 flag 失效
- 题目测试模式(admin)不产生真实 flag 记录
多 Flag 配置
每道题可配置多个 flag,每个 flag 独立计分。选手提交其中任一 flag 即可获得对应分数,提交所有 flag 可获得该题目的全部分数。
Flag 前缀由所在比赛的 prefix 字段配置,不同比赛可以使用不同前缀(如 flag、CTF、CBCTF)。
