Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
2024/12/14 xryuseix (@ryusei_ishika) OSINT CTFの リアル作問環境を体験してみよう!
Slide 2
Slide 2 text
本講義の概要 2 TsukuCTF、DIVER OSINT CTFの作問環境で問題を作成し、 ローカル環境でデプロイする 長いので一言でまとめると ... Backlogより
Slide 3
Slide 3 text
事前準備 ● Docker ● Docker-Compose ● Git, GitHubアカウント ● Python, pip ● (あると嬉しい) make, golang, pipx, 問題用の任意の写真 準備しておいてもらいたいもの (バージョンは、ある程度新しければ基本的に大丈夫です ) 3
Slide 4
Slide 4 text
全体の流れ 4 ● OSINT問題の作成 ○ 環境構築 ○ 問題作成 ○ PRの作成 ● CTFサーバの起動 ○ サーバ起動 ○ 初期設定 ● ctfcliを用いた問題のデプロイ
Slide 5
Slide 5 text
OSINT問題の作成 - リポジトリのダウンロードと作問ディレクトリの自動生成 5 $ 先にフォークする $ git clone https://github.com/ユーザ名/returns2024 $ cd returns2024 $ git submodule init $ git submodule update --remote $ git checkout -b "feat/xryuseix" ←被らないように設定してください $ make gen $ # または docker-compose run gen bash -c "make gen" ←フラグフォーマットは returns{.*}の形式で強制しています ← OSINTを設定してください
Slide 6
Slide 6 text
OSINT問題の作成 - ファイルの配置 6 ● 指定したジャンルのディレクトリに作った 問題のファイルが生成されています ● 各ディレクトリの説明 ○ build…今回は使わない ○ challenge.yaml…問題の設定ファイル ○ flag.txt…フラグを記載 ○ public…公開ファイルを配置 ○ solver…今回は使わない ○ writeup…今回は使わない ● publicディレクトリに問題にする任意の写真をおいて ください ○ なければネットから適当に拾ってきたり、写真 なしテキストだけで問題を 作っても大丈夫です
Slide 7
Slide 7 text
OSINT問題の作成 - 問題の作成 7 ● osint/sample/challenge.ymlを参考に、ご 自身で作ったディレクトリ内の challenge.ymlを編集して、色々設定して ください ● 長いけど編集しなきゃいけないのは 右の項目だけ(うちいくつかは最初から設 定されている) ● 特に、公開するファイル(写真など)の パスを記載するfilesは記載ミスに注意! ○ 注) 公開ファイルがない場合はコメン トアウトしてください
Slide 8
Slide 8 text
OSINT問題の作成 - フラグのテスト 8 ● osint/sample/flag.txtを参考に、ご自身で作ったディレクトリ内の flag.txtを 編集します ● ここではフラグのUnit Testを行います ○ フラグフォーマット、正規表現、複数のフラグ設定のミスを確認します ● 通る想定のフラグと通らない想定のフラグを設定してください 通る→ 通らない→
Slide 9
Slide 9 text
OSINT問題の作成 - PRの作成 9 $ git add . $ git commit -m "add my chall" $ git push -u origin feat/xryuseix ←さっき設定したブランチ ● 終わったらPRを作成してください ○ https://github.com/xryuseix/returns2024/pulls ○ 例示用のPRもあります→ ● PRコメントはなんでもいいです ● PRを作成したらCIが走ります。少し待ってください。
Slide 10
Slide 10 text
OSINT問題の作成 - CIの結果確認 10 こうなってたらOK 画像が入っている場合は こんなコメントも送られてくる
Slide 11
Slide 11 text
OSINT問題の作成 - CIの結果確認と修正 11 ● CIのエラーが出た場合、Detailsから エラーメッセージをみよう ○ 特に多いのがyamlのインデントミス ○ わかりにくかったらすぐに質問してくだ さい (個々のケース用のスライドを作るのが面倒 )
Slide 12
Slide 12 text
OSINT問題の作成 - mainブランチへのマージ & pull 12 ● GitHubのPRページの下にあるマージボタンでマージしてくださ い ● 終わったらシェルに戻って以下のコマンドを実行 $ git checkout main $ git pull origin main
Slide 13
Slide 13 text
CTFサーバの設定 - サーバの起動 13 ここから先、時間なかったら僕だけやります $ pipx install ctfcli $ # または $ pip install ctfcli $ cd .. # returns2024ディレクトリ外であればどこでもいいです $ git clone https://github.com/CTFd/CTFd $ cd CTFd # 3分くらいかかります $ docker-compose up -d
Slide 14
Slide 14 text
CTFサーバの設定 - CTFdの初期設定 14 http://localhost:8000/ にアクセスします ほぼ変更しなくていいです。
Slide 15
Slide 15 text
CTFサーバの設定 - CTFdの初期設定 15 http://localhost:8000/ にアクセスします ほぼ変更しなくていいです。
Slide 16
Slide 16 text
CTFサーバの設定 - アクセストークンの取得 16 設定→アクセストークンで 有効期限を設定して生成します
Slide 17
Slide 17 text
ctfcliを用いた問題のデプロイ 17 ctfcliをpipでインストールするとctfコマンドが使えます。 URLは画像と一緒で、アクセストークンは各自変更してください。 最初にcloneしたreturns2024ディレクトリで実行します。
Slide 18
Slide 18 text
ctfcliを用いた問題のデプロイ 18 mainブランチにマージしたあと、bash install.shコマンドを実行します 実行後、 http://localhost:8000/admin/challenges にアクセスするとこうなっている
Slide 19
Slide 19 text
(時間余ったらのコンテンツ ) みんなが作成した問題を解いてみよう! 19