DIVER OSINT CTF 2025: SITREP a.k.a. Writeup - atgt-gm
🐚 DIVER OSINT CTF 2025 SITREP a.k.a. Writeup
Team Name: atgt-gm
チーム人数: 6 人
総得点: 10759pt
順位: 最終 6 位
使用ツール: ChatGPT(チーム全体では o3
を、個人では 4o
をメインに使用。攻略中も 常に対話ベースで支援を受けながら 進めていました), Google Lens, ExifTool, what3words, wigle, Overpass Turbo, Archive.today など
✨ 概要と感想
はじめまして、YutoRaion です。普段は趣味で Nuxt3 をやったり、ChatGPT と戯れたり、 Ingress という位置情報ゲームで暗号解読を行ったりしています。また、数回ほど「X(旧 Twitter)のあんたがたに挑戦します」という有志開催謎解きイベントのゲームマスター(運営)として、謎を出題したりシステムを構築したりしています。
さて、24 時間開催の DIVER OSINT CTF 2025 に、チーム atgt-gm
として初参加しました。6 名中ひとりを除き全員が 初めての CTF だったにも関わらず、 最終 6 位 という高スコアを獲得。大きな爪痕を残したと言えるでしょう。
Jeopardy 形式(複数の独立した問題を好きな順に解いていく形式)で OSINT に特化した構成となっており、難易度・形式ともに非常にバリエーション豊かな構成でした。
惜しくもmedium カテゴリを全問クリアには至らず、試験的に導入された 記述式問題 への挑戦権は得られませんでしたが、得点分布や正答率を見る限り、かなり密度の高い体験ができたと感じています。
この記事では、各出題のうち、私が解決した問題の解法と、そこから得られた気づきや学びについて記録していきます。
なお、このブロックを含め、全文は ChatGPT 4o の支援を受けて執筆しています。また、一部問題には前提となる出題がありますが、こちらは後日公開予定の公式 Writeup をご参照ください。その点を念頭に置いてご覧いただけると嬉しいです。
✔️ 個人 Solve Summary(時系列)
時刻 (JST) | 問題名 | カテゴリ | 難易度 | 得点 / Solves |
---|---|---|---|---|
6/7 12:04:44 | finding_my_way | introduction | introduction | 100 / 406 solves |
6/7 14:14:29 | UART | hardware | hard | 495 / 24 solves |
6/7 15:43:10 | hole | geo | medium | 449 / 72 solves |
6/7 16:42:04 | 04_internal | recon | medium | 416 / 93 solves |
6/7 17:27:01 | 03_ceo | recon | medium | 302 / 142 solves |
6/8 00:23:51 | 06_leaked | recon | medium | 499 / 12 solves |
6/8 01:22:46 | louvre | introduction | introduction | 176 / 181 solves |
6/8 01:41:12 | what3slashes | geo | medium | 446 / 75 solves |
6/8 03:15:30 | 02_recruit | recon | medium | 488 / 37 solves |
🔧 各問題の解法と振り返り
finding_my_way
🧩 問題名:カテゴリ:introduction
難易度:introduction
Solve 時間:2025-06-07 12:04:44 JST
得点 / Solve 数:100pt / 406 solves
問題概要:
OpenStreetMap 活用の基礎的問題。指定された座標から構造物(Way)を特定し、その内部番号を答える形式。
解法ステップ:
- 添付された緯度経度を OpenStreetMap で開く。
- OpenStreetMap で該当地点に存在する構造物の Way 番号を取得
- Way 番号
568613762
を確認し、 Flag 形式Diver25{568613762}
を適用して提出、Solved。
提出フラグ: Diver25{568613762}
使用ツール・参照データ:
- OpenStreetMap
所感・ポイント:
- introduction としてふさわしいであろう基礎的問題だと感じた。
- OSM は Ingress などでも活用実績があるため、馴染み深かった。
- 番地などではなく Way 番号を求めるタイプの問題が他にもあったため、基礎操作として身につけておくと強い。
UART
🧩 問題名:カテゴリ:hardware
難易度:hard
Solve 時間:2025-06-07 14:14:29 JST
得点 / Solve 数:495pt / 24 solves
問題概要:
TP-Link 製ルーターのハードウェア解析問題。 添付された URL と FCC 資料から イーサネットスイッチコントローラ の UART ピン位置を特定し、基板のシルク記載+ピン番号で正確な位置を答える形式。
解法ステップ:
- 添付されたサイトから機種を確認し FCC ID を特定、 FCC データベースサイトをもとに基板のパターンを解析
- UART 端子を含むイーサネットスイッチのシルク記述(U7, V7 など)を確認
- チップの位置関係とデータシートから TX/RX を推定
- 提出フォーマットに従い
Diver25{U7_45_46}
などを試行 - 3 種を試行し Incorrect で困惑していたところ、追加パターンが正解として後に受理され、Solved。
使用ツール・参照データ:
- WikiDevi.Wi-Cat.RU
- fcc.report
- FCC 公開資料(Internal Photos)
-
RTL8367S
データシート
所感・ポイント:
- 通信機器と電子工作の知識が噛み合う非常に面白い問題だった。
- ピン番号や記載は視認性の関係か複数パターンで成立するとみられる。最終的に運営から正解追加が行われた。
hole
🧩 問題名:カテゴリ:geo
難易度:medium
Solve 時間:2025-06-07 15:43:10 JST
得点 / Solve 数:449pt / 72 solves
問題概要:
添付画像で確認できる「穴」が存在する(または、した)場所について、正しい位置を特定する問題。この問題では CTFd のカスタム機能として マップ上にピンを刺して回答する 形式が用いられた。
解法ステップ:
- チームメンバーが Instagram 動画 を見つけてくれていたところからスタート。
- Instagram 動画に併記されていた
yangwangu9
から 公式英語版動画 を発見。 - 動画から、中国の山西省大同市であることを特定。
- Google Maps の衛星画像を駆使し、「それっぽい」場所を目視で捜索。
- 適当にズームしたところ、動画の特徴に合致する滑走路のような箇所を発見。
- 衛星画像を確認し、「穴」そのものは確認できなかったものの確証を得て提出、Solved。
使用ツール・参照データ:
- Google Maps
所感・ポイント:
- 視覚的に地形パターンを見抜く力と、OSINT 的推理を両立させる面白い問題。
- 正直、「適当にズームした」ところから、自分たちの解法には運要素が絡んていたと思われる。
- 検索だけではなく、「観察して仮説を立てる」ことの重要性を理解した。
04_internal
🧩 問題名:カテゴリ:recon
難易度:medium
Solve 時間:2025-06-07 16:42:04 JST
得点 / Solve 数:416pt / 93 solves
問題概要:
recon の 00_engineer
から派生する問題群のひとつ。前提問題から得られた企業 magneight
の運用する社内用 DevOps プラットフォームのバージョン名を、表記されている通りに答える問題。
解法ステップ:
-
magneight
の Web サイトが運用されているサーバの IP アドレスを Censys で調査する。 - 該当 VPS サーバの HTTP ポート
3000
から、または併記されている正引き DNS の結果から Gitea が稼働していることを確認。 - 当該サービスに実際にアクセスし、画面下部に記載されたバージョン
1.24.0+dev-303-gd88b012525
を確認。 - Flag 形式
Diver25{1.24.0+dev-303-gd88b012525}
を適用して提出、Solved。
提出フラグ: Diver25{1.24.0+dev-303-gd88b012525}
使用ツール・参照データ:
- Censys
所感・ポイント:
- システム系 OSINT の定番の調査手法だと思われる。
- 実際には Censys での HTTP ポート
3000
に関する Response Body の項にバージョン情報が含まれており、 直接のアクセスを行わずとも取得可能 であった。この点は今後の行動指針として意識しておきたい。
03_ceo
🧩 問題名:カテゴリ:recon
難易度:medium
Solve 時間:2025-06-07 17:27:01 JST
得点 / Solve 数:302pt / 142 solves
問題概要:
recon の 00_engineer
から派生する問題群のひとつ。前提問題から得られた企業 magneight
の CEO のメールアドレスを特定する問題。
解法ステップ:
- チームメンバーが
magneight
の Web サイトより CEO 氏名を確認し、GitHub や Instagram を特定していたところからスタート。 - 前提問題において調査対象となっていたエンジニア
kodai_sn
が作成した GitHub レポジトリをフォーク・コミットしているのを発見。 - 当該レポジトリを clone し、
git log
の出力からコミット Author のメールアドレスmizuki1206anemone@gmail.com
を特定。 - Flag 形式
Diver25{mizuki1206anemone@gmail.com}
を提出し、Solved。
提出フラグ: Diver25{mizuki1206anemone@gmail.com}
使用ツール・参照データ:
- GitHub
所感・ポイント :
- 引き続き、システム系 OSINT の定番の調査手法だと思われる。
- GitHub におけるメールアドレス情報は非公開のようでいて実際は 公開情報である ことを思い出す良いきっかけとなった。
- なお、
kodai_sn
の X アカウントから GitHub の使い方ハンズオン資料を閲覧できたこと、それを社長が実施したとの投稿から GitHub を推定する問題だったと思われる。 - 今回の調査で得られたように、GitHub の commit log から個人メールが取得できるケースがある。これを防ぐには
.mailmap
や noreply 設定が有効であると、執筆時点の ChatGPT 4o も示唆していた。
06_leaked
🧩 問題名:カテゴリ:recon
難易度:medium
Solve 時間:2025-06-08 00:23:51 JST
得点 / Solve 数:499pt / 12 solves
問題概要:
recon の 00_engineer
から派生する問題群のひとつ。前提問題の調査対象となっていたエンジニア kodai_sn
の開発アカウントのパスワードが流出したとして、そのパスワードを特定する問題。
解法ステップ:
-
03_ceo
において、kodai_sn
のメールアドレスkodaisn.development@gmail.com
も同様の手法で特定していたところからスタート。 - チームメンバーのひとりが「過去の他 CTF の Writeup から類推できるのでは」と指摘。
- 他 Writeup を閲覧していた別のチームメンバーが、「pastebin とはなにか」と質問。
- 回答ついでに pastebin をメールアドレスの前半部
kodaisn
で検索。まさかのヒット、 パスワード1_4m_fr0m_h0kk41d0_4nd_l0v3_54un4
を特定。 - Flag 形式
Diver25{1_4m_fr0m_h0kk41d0_4nd_l0v3_54un4}
を提出し、Solved。
提出 Flag: Diver25{1_4m_fr0m_h0kk41d0_4nd_l0v3_54un4}
使用ツール・参照データ:
- pastebin
所感・ポイント:
- pastebin は良くも悪くも 自由に テキストデータを記録できるサービス。
- 過去に pastebin を使用していたこともあり、アカウントを所持。検索にはアカウントが必要だったが、ログインのみで困らなかった。
- 一見過去ログの山に埋もれそうな情報であっても、検索ワードや場所が合えば即座に解決できることを痛感した。
louvre
🧩 問題名:カテゴリ:introduction
難易度:introduction
Solve 時間:2025-06-08 01:22:46 JST
得点 / Solve 数:176pt / 181 solves
問題概要:
Wi-Fi 調査の基礎的問題。ルーブル美術館で提供されている公共 Wi-Fi アクセスポイントのベンダー(装置製造企業)を、 2025 年 2 月 28 日に収集された情報 から特定する問題。
解法ステップ:
- 問題文を ChatGPT 4o に入力し、 WiGLE サービスの存在を確認。アカウント作成。
- WiGLE でルーブル美術館近辺を開き検索を試みるもうまく検索できず。多数の Bad Request を受け取り、最終的にはレートリミットに到達。一旦放置。
- 数時間後に再挑戦。アプローチを変え、まずはルーブル美術館の公共 Wi-Fi の SSID
Louvre_Wifi_Gratuit
を、公式サイト FAQ より確認。 - WiGLE で再度ルーブル美術館近辺を開き、SSID で検索。多数のヒットがあったものの特定範囲のみとなり、絞り込みが可能に。
- 問題の要件通り
2025-02-28
に収集されたデータを、ページの HTML 上に表示された部分からページ内検索で絞り込み。 (本来はLast Updated
で絞り込み検索をするものと思われる) 結果、2 件ヒット。 - 検索結果に書かれた BSSID (MAC アドレス)が同一だったため、 前半 6 桁
50:60:28
をもとに macvendors.com で照会、 解答Xirrus Inc.
を確認。 - Flag 形式
Diver25{Xirrus Inc.}
を提出し、Solved。
提出 Flag: Diver25{Xirrus Inc.}
使用ツール・参照データ:
- WiGLE
- macvendors.com
所感・ポイント:
- 長く苦しい戦いだった(NKT)。本 Solve を以て、チームは introduction を完遂。
- WiGLE はアカウント作成からの経過時間に応じてレートリミットが緩和される仕様で、これに悩まされた。
また、検索方法がわかりにくいところもあったので、ツール類は勉強が必要だと痛感した。
what3slashes
🧩 問題名:カテゴリ:geo
難易度:medium
Solve 時間:2025-06-08 01:41:12 JST
得点 / Solve 数:446pt / 75 solves
問題概要:
ある場所に建つ家の配置と建設状況の変化をもとに、「その場所に再訪した年月(YYYY/MM)」を特定する問題。与えられた手がかりは以下の通り:
- 初回訪問時:
- 正面に家が 3 軒、右手に家が 1 軒。
- 再訪時(ある月の初旬):
- 正面左に 1 軒増え、正面右にも建設中の 1 軒。
- 建設中の家は屋根がまだなく、黒っぽい屋根が予定されている。
この「ある月の初旬」が何年何月かを特定し、 Diver25{YYYY/MM}
の形式で答える。
解法ステップ:
- 添付された画像を確認。写っていた紙に記載されたキリル文字は識別が非常に難しかったものの、特徴的な「赤い
///
」と「.
で区切られた 3 つの単語」から、チームの共通認識として「なにさんご」―― what3words であることは明白であった。 - チームメンバーがキリル文字を解読し、当該 what3words から提供される座標を特定したところからスタート。
なお、特定された what3words は///бумба.цогц.бататгав
、座標は47.931018, 106.800181
であった。 - ChatGPT 4o に「特定の座標の過去の衛星画像を確認する方法」を相談。いくつかの案が提示される。
- Sentinel Hub EO Browser をおすすめされアカウントを作成。しかし具体的な場所の過去画像を表示する操作方法がわからず、断念。
- Google Earth Pro をインストールし、当該地点の過去の衛星画像を確認。再訪時の時系列(建設中の一軒が屋根がなく、次の更新で黒い屋根が写るようになる)に該当する撮影日
2018/10/30
を特定。 -
2018/10/30
に建設中の家が確認できたことから、冒頭の「ある月の初旬」は同年 10 月のことであると判断。(前回の更新2018/09/30
では建設すらされてなかった) Flag 形式Diver25{2018/10}
を提出、Solved。
提出 Flag: Diver25{2018/10}
使用ツール・参照データ:
- what3words
- Sentinel Hub EO Browser
- Google Earth Pro
所感・ポイント:
- what3words はチームにとって基礎知識であったため、容易に場所の特定に進むことができた。
- 過去の衛星画像を確認するのに手間取ったが、おそらく他にも有名なツールがあると推測している。
今後、過去画像を手軽に比較できる OSINT ツールを事前に習熟しておくと、より迅速に対応できると感じた。
02_recruit
🧩 問題名:カテゴリ:recon
難易度:medium
Solve 時間:2025-06-08 03:15:30 JST
得点 / Solve 数:488pt / 37 solves
問題概要:
recon の 00_engineer
から派生する問題群のひとつ。前提問題から得られた企業 magneight
の「採用担当者」の名前を特定する問題。
解法ステップ:
- チームメンバーが
magneight
の企業 Web サイトやそのドメインの WHOIS を確認・調査していたところからスタート。
なお、WHOIS は情報公開代行サービスにより秘匿されていたため、有益な情報は得られなかった。 - チームメンバーが企業 Web サイトの archive.today に記録されたアーカイブを発見。
- 当該アーカイブの Contact ページを確認すると、採用に関する Google ドキュメント を確認できる。
- Google ドライブの各種ファイルは、閲覧権限がある状態で開いた場合上部メニューのファイル → プロパティ等から 共有元アカウントのメールアドレスやユーザ名、アイコンが確認でき、そこから個人の識別が可能。
これを確認し、メールアドレスmakoto.u.sunflower@gmail.com
あるいはユーザ名Makoto Uchigashima
を特定。 - (任意) Gmail アドレスからカレンダーや Google Maps の口コミの URL を調査できる Epieos でメールアドレスを照会、Google Maps 経由でユーザ名を同定。
- Flag 形式
Diver25{Makoto Uchigashima}
を提出、Solved。
提出 Flag: Diver25{Makoto Uchigashima}
使用ツール・参照データ:
- archive.today
- Google Documents
- Epieos
- Google Maps
所感・ポイント:
- Web アーカイブサイトを調査する考えが抜けていた。発見したチームメンバーに感謝。
- Epieos の効果は絶大だった。なお、前述の CEO のメールアドレスも照会してみたところ、Google カレンダーが共有されており、その存在が確認できた。
Discussion