Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OSINT CTFの リアル作問環境を体験してみよう!
Search
Ryusei Ishikawa
December 15, 2024
Technology
0
87
OSINT CTFの リアル作問環境を体験してみよう!
Ryusei Ishikawa
December 15, 2024
Tweet
Share
More Decks by Ryusei Ishikawa
See All by Ryusei Ishikawa
OSINT CTFを支える技術
xryuseix
1
540
HTTP通信を書きかえてみよう
xryuseix
0
60
Webアプリケーションのユーザ入力検証
xryuseix
3
1.1k
Privateリポジトリで 管理しているソースコードを 無料でGitHub Pagesに公開する
xryuseix
0
2.3k
CTFにおけるOSINT問題作問の難しさ
xryuseix
0
640
「Reactはビルド時にコメントが消えるから」と言ってコメントに💩を書いてはいけない
xryuseix
0
1.2k
Other Decks in Technology
See All in Technology
「正しく」失敗できる チームの作り方 〜リアルな事例から紐解く失敗を恐れない組織とは〜 / A team that can fail correctly
i35_267
4
850
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
270
Perlの生きのこり - エンジニアがこの先生きのこるためのカンファレンス2025
kfly8
2
270
IAMポリシーのAllow/Denyについて、改めて理解する
smt7174
2
200
Amazon Q Developerの無料利用枠を使い倒してHello worldを表示させよう!
nrinetcom
PRO
2
110
CDKでカスタムランタイムを作成して、Lambdaをnode.js23+TypeScriptで動かしてみた
smt7174
2
110
Potential EM 制度を始めた理由、そして2年後にやめた理由 - EMConf JP 2025
hoyo
2
2.5k
【内製開発Summit 2025】イオンスマートテクノロジーの内製化組織の作り方/In-house-development-summit-AST
aeonpeople
2
610
スキルだけでは満たせない、 “組織全体に”なじむオンボーディング/Onboarding that fits “throughout the organization” and cannot be satisfied by skills alone
bitkey
0
170
エンジニアが加速させるプロダクトディスカバリー 〜最速で価値ある機能を見つける方法〜 / product discovery accelerated by engineers
rince
4
560
4th place solution Eedi - Mining Misconceptions in Mathematics
rist
0
140
わたしがEMとして入社した「最初の100日」の過ごし方 / EMConfJp2025
daiksy
14
4.8k
Featured
See All Featured
Statistics for Hackers
jakevdp
797
220k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Speed Design
sergeychernyshev
27
810
The Art of Programming - Codeland 2020
erikaheidi
53
13k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Typedesign – Prime Four
hannesfritz
40
2.5k
Building Applications with DynamoDB
mza
93
6.2k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Transcript
2024/12/14 xryuseix (@ryusei_ishika) OSINT CTFの リアル作問環境を体験してみよう!
本講義の概要 2 TsukuCTF、DIVER OSINT CTFの作問環境で問題を作成し、 ローカル環境でデプロイする 長いので一言でまとめると ... Backlogより
事前準備 • Docker • Docker-Compose • Git, GitHubアカウント • Python,
pip • (あると嬉しい) make, golang, pipx, 問題用の任意の写真 準備しておいてもらいたいもの (バージョンは、ある程度新しければ基本的に大丈夫です ) 3
全体の流れ 4 • OSINT問題の作成 ◦ 環境構築 ◦ 問題作成 ◦ PRの作成
• CTFサーバの起動 ◦ サーバ起動 ◦ 初期設定 • ctfcliを用いた問題のデプロイ
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を設定してください
OSINT問題の作成 - ファイルの配置 6 • 指定したジャンルのディレクトリに作った 問題のファイルが生成されています • 各ディレクトリの説明 ◦
build…今回は使わない ◦ challenge.yaml…問題の設定ファイル ◦ flag.txt…フラグを記載 ◦ public…公開ファイルを配置 ◦ solver…今回は使わない ◦ writeup…今回は使わない • publicディレクトリに問題にする任意の写真をおいて ください ◦ なければネットから適当に拾ってきたり、写真 なしテキストだけで問題を 作っても大丈夫です
OSINT問題の作成 - 問題の作成 7 • osint/sample/challenge.ymlを参考に、ご 自身で作ったディレクトリ内の challenge.ymlを編集して、色々設定して ください •
長いけど編集しなきゃいけないのは 右の項目だけ(うちいくつかは最初から設 定されている) • 特に、公開するファイル(写真など)の パスを記載するfilesは記載ミスに注意! ◦ 注) 公開ファイルがない場合はコメン トアウトしてください
OSINT問題の作成 - フラグのテスト 8 • osint/sample/flag.txtを参考に、ご自身で作ったディレクトリ内の flag.txtを 編集します • ここではフラグのUnit
Testを行います ◦ フラグフォーマット、正規表現、複数のフラグ設定のミスを確認します • 通る想定のフラグと通らない想定のフラグを設定してください 通る→ 通らない→
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が走ります。少し待ってください。
OSINT問題の作成 - CIの結果確認 10 こうなってたらOK 画像が入っている場合は こんなコメントも送られてくる
OSINT問題の作成 - CIの結果確認と修正 11 • CIのエラーが出た場合、Detailsから エラーメッセージをみよう ◦ 特に多いのがyamlのインデントミス ◦
わかりにくかったらすぐに質問してくだ さい (個々のケース用のスライドを作るのが面倒 )
OSINT問題の作成 - mainブランチへのマージ & pull 12 • GitHubのPRページの下にあるマージボタンでマージしてくださ い •
終わったらシェルに戻って以下のコマンドを実行 $ git checkout main $ git pull origin main
CTFサーバの設定 - サーバの起動 13 ここから先、時間なかったら僕だけやります $ pipx install ctfcli $
# または $ pip install ctfcli $ cd .. # returns2024ディレクトリ外であればどこでもいいです $ git clone https://github.com/CTFd/CTFd $ cd CTFd # 3分くらいかかります $ docker-compose up -d
CTFサーバの設定 - CTFdの初期設定 14 http://localhost:8000/ にアクセスします ほぼ変更しなくていいです。
CTFサーバの設定 - CTFdの初期設定 15 http://localhost:8000/ にアクセスします ほぼ変更しなくていいです。
CTFサーバの設定 - アクセストークンの取得 16 設定→アクセストークンで 有効期限を設定して生成します
ctfcliを用いた問題のデプロイ 17 ctfcliをpipでインストールするとctfコマンドが使えます。 URLは画像と一緒で、アクセストークンは各自変更してください。 最初にcloneしたreturns2024ディレクトリで実行します。
ctfcliを用いた問題のデプロイ 18 mainブランチにマージしたあと、bash install.shコマンドを実行します 実行後、 http://localhost:8000/admin/challenges にアクセスするとこうなっている
(時間余ったらのコンテンツ ) みんなが作成した問題を解いてみよう! 19