LiveCTF 2022
本仓库用于存储 DEF CON CTF 决赛 LiveCTF 活动的挑战、基础设施说明、直播配置以及其他受版本控制的信息。
LiveCTF 中使用的挑战
挑战二进制文件
如果你有兴趣使用每轮比赛中使用的原始挑战二进制文件进行练习,你可以按照下面的说明自行构建,或者查看 发布版 的 handouts/ 子文件夹。
挑战结构
├── <challenge>
│ ├── challenge
│ │ ├── build.sh # Commands for building challenge binary/binaries and handout
│ │ ├── config.toml # Config file for flag submitter
│ │ ├── Dockerfile # Dockerfile for building challenge image
│ │ ├── run.sh # Command(s) to start the challenge
│ │ └── src # This is where the source for the challenge will go
│ │ └── challenge.c
│ └── solution
│ ├── requirements.txt # Solution script requirements
│ └── solve.py # Challenge solve script
构建挑战
./livectf.py build <challenge>
管理挑战
挑战管理(创建/构建/启动/停止)通过 livectf.py 完成,它是 docker 的一个轻量级封装。用法参见 ./livectf.py --help。
添加挑战
./livectf.py create <challenge> 会将模板挑战复制到一个新的挑战目录。
- 在
<challenge>/challenge/src 中添加你的挑战源代码。
- 更新
<challenge>/solution/solve.py 中的解题脚本。
(对于包含多个源文件 + 一个二进制文件的挑战):
- 如有需要,请编辑
<challenge>/challenge/Dockerfile 中的 REQUIRED_PACKAGES,以包含任何额外的构建/运行时依赖项。
- 如有需要,请修改
<challenge>/challenge/build.sh 中的构建命令。
- 如有需要,请修改
<challenge>/challenge/build.sh 中的 HANDOUT_FILES。
为挑战添加解题脚本
- 将任何 pip 依赖项添加到
<challenge>/solution/requirements.txt。
- 将你的解题脚本放入
<challenge>/solution/solve.py。