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
440
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OSINT CTFの リアル作問環境を体験してみよう!
Ryusei Ishikawa
December 15, 2024
More Decks by Ryusei Ishikawa
See All by Ryusei Ishikawa
“それなりに”安全なWebアプリケーションの作り方
xryuseix
0
710
DIVER OSINT CTF を支える技術 2025
xryuseix
0
240
OSINT CTFを支える技術
xryuseix
1
1.3k
HTTP通信を書きかえてみよう
xryuseix
0
94
Webアプリケーションのユーザ入力検証
xryuseix
3
1.4k
Privateリポジトリで 管理しているソースコードを 無料でGitHub Pagesに公開する
xryuseix
0
5.2k
CTFにおけるOSINT問題作問の難しさ
xryuseix
0
870
「Reactはビルド時にコメントが消えるから」と言ってコメントに💩を書いてはいけない
xryuseix
0
1.5k
Other Decks in Technology
See All in Technology
dbt と Snowflake と tag
kevinrobot34
2
290
IHV like なユースケースへのOpenID Connect 関連仕様の適用事例
optim
0
360
わたしが知り合いゼロの勉強会に 行けるようになるまで
r5ni4
2
830
PdMをやめて、 "プロダクトビルダー"という 働き方に変えました / PdM to Product Builder
shikichee
1
130
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
86k
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
200
OpenID for Verifiable Credentials 実装から見えた相互運用性確保までの道のり(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
360
現場の暗黙知を継承するAIエージェント — 対話から生まれる長期記憶と Skills
atsukish
0
130
Digitization部 紹介資料
sansan33
PRO
2
7.8k
「面白い!」を信じ抜け。激動の時代を貫く、オンリーワン・エンジニアの条件
kizawa2020
2
400
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
NANDでも描画したい!
nichica906
3
810
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
490
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
750
Done Done
chrislema
186
16k
Bash Introduction
62gerente
615
220k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
490
Writing Fast Ruby
sferik
630
63k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
220
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
How to Talk to Developers About Accessibility
jct
2
530
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Scaling GitHub
holman
464
140k
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