JNCTF平台出题规范1.0
说明
此文仅用于江南大学网络空间俱乐部CTF平台出题参考,请各位出题人务必仔细认真阅读,并按照出题规范给出题目,出题不规范,运维两行泪。
常见问题说明
以下问题是历史出题过程中出现的不好的地方,希望以后不要出现
- 拖拖拉拉,不按时交付题目(提前出题,不要指望自己一天能出好)
- docker很不熟练,Web与Pwn无法构建Dockerfile(比着葫芦画瓢)
- 出题不写题目描述(认真且真实的描写与题目相关的题目描述)
- flag格式比较乱(静态flag统一为JNCTF{***}、动态flag统一填写flag{zheshiflag},平台会自动进行替换)
- data.yml不给flag和wp(老实给出flag和writeup)
交付说明
小题出题人
如果你是出题人,应该保证完成如下任务
- 路径及题目文件附件等不含有中文
- 严格按照文件夹结构出题,可参照历年JNCTF校赛题目环境
- 自己做一遍题目,确保自己能解出题目
- 提供详细且完整的WriteUp,有解题脚本的请在wp中提供脚本
- Web题与Pwn题确保docker-compose up -d 命令可以直接启动环境
- 确保data.yml格式无误(一个空格也不行,网上有检查格式的网站)
如果你是出题人,应该保证交付以下文件
- 相应小题的文件夹(参照文件夹结构说明)
- 该题目的data.yml文件
分方向负责人
如果你是分方向负责人,请搭建比赛平台,并确保完成如下任务
- 整合该方向出题人提供的所有题目的data.yml(一个空格也不行,网上有检查格式的网站)
- 确保python import2chal data.yml命令可以启动该方向整个题目环境
如果你是分方向负责人,应该保证交付以下文件(参照文件夹结构说明)
- 相应方向的题目文件夹,比如Web的整个题目文件夹
- Web题目的data.yml
比赛负责人
如果你是比赛负责人,请搭建比赛平台,并确保完成如下任务
- 整合所有方向出题人提供的data.yml(一个空格也不行,网上有检查格式的网站)
- 与分方向负责人及出题人协商题目分数
- 确保python import2chal data.yml可以启动整个比赛环境
- 提前部署比赛环境,并确保比赛时间无误和赛前题目不可见
- 随时准备比赛环境中的突发事故处理
规范说明
文件夹结构说明
各方向文件夹目录结构相同,以Pwn题为例给出题目文件夹结构
1 | challenges----|--Pwn--------easyPwn |---source # 文件夹,用于放置题目源代码 |
data.yml规范
1 | match_name: |
- 为防止部署出错,路径及文件请不要带有中文
- origin请明确指明出题人(ID即可,中文ID请使用拼音)
- 有docker环境的题目flag必须全为动态,flag字段填写random,pushflag: xxx/xxx.sh,脚本参照出题样例,动态flag格式为flag{zheshiflag},静态flag格式为JNCTF{XXXXXXX}
- 分值可设置为100,比赛负责人会考虑题目难度重新给分
Dockerfile规范
Dockerfile编写参照官方教程,俱乐部现有的dockerfile如下
- Web:apache+php
- Web:apache+php+mysql
- Pwn题dockerfile
可自行根据需要去gitlab历史比赛题目寻找,欢迎大家完善dockerfile
docker-compose.yml规范
Web
1 | services: |
Pwn
1 | services: |
- name填写题目名,严禁使用easypwn、easyphp、pwn1、web1等容易重复的名字
- docker_register_host填写docker仓库服务器IP地址,若不清楚,可询问俱乐部当年度负责人
题目部署失败问题排查
- 文件夹是否含有中文
- data.yml所指向的文件及附件是否存在
- data.yml格式错误(空格也不行)
- docker-compose.yml中的仓库ip地址是否正确
本文作者:
yd0ng
本文链接: https://yd0ng.github.io/2020/08/10/JNCTF%E5%B9%B3%E5%8F%B0%E5%87%BA%E9%A2%98%E8%A7%84%E8%8C%83/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://yd0ng.github.io/2020/08/10/JNCTF%E5%B9%B3%E5%8F%B0%E5%87%BA%E9%A2%98%E8%A7%84%E8%8C%83/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!