LiveCTF 2022
DEF CON CTF 決勝の LiveCTF イベント向けに、チャレンジ、インフラストラクチャのメモ、ストリーミング設定、その他のバージョン管理された情報を保存するリポジトリです。
LiveCTF で使用されたチャレンジ
チャレンジのバイナリ
各ラウンドで使用された正確なチャレンジバイナリでプレイしたい場合は、以下の説明に従って自分でビルドするか、release の 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>
チャレンジの管理
チャレンジの管理(作成・ビルド・起動・停止)は、docker の軽量ラッパーである livectf.py を使用して行います。使い方については ./livectf.py --help を参照してください。
チャレンジの追加
./livectf.py create <challenge> は、テンプレートチャレンジを新しいチャレンジディレクトリにコピーします。
- チャレンジのソースを
<challenge>/challenge/src に追加します。
<challenge>/solution/solve.py のソリューションスクリプトを更新します。
(複数のソースファイルと 1 つのバイナリを含むチャレンジの場合):
- 必要に応じて、
<challenge>/challenge/Dockerfile 内の REQUIRED_PACKAGES を編集し、追加のビルド/実行時依存関係を含めます。
- 必要に応じて、
<challenge>/challenge/build.sh 内のビルドコマンドを変更します。
- 必要に応じて、
<challenge>/challenge/build.sh 内の HANDOUT_FILES を変更します。
チャレンジのソリューションの追加
- 必要な pip 依存関係を
<challenge>/solution/requirements.txt に追加します。
- ソリューションスクリプトを
<challenge>/solution/solve.py に配置します。