🎣

【Writeup】DIVER OSINT CTF 2025

に公開

2025年6月7日~8日に開催されたDIVER OSINT CTF 2025 にチームmeaningful morningで出場しました。昨年に引き続き、2回目になります。最終順位は47/668チームでした。(6012pt)

本記事では、私 (Kenny)が主に解いた問題に関して紹介します。

1. 船舶の調査(Ship)

  • 提供された画像をもとに コールサイン(JPIK) を読み取り。
  • MarineTraffic にてコールサインで検索。
  • 表示されたページから IMO番号(9767675) を特定。

✅ IMOは一度付与されると変更されない不変の識別子。

2. PDFファイルから作成者情報を得る(Document)

  • CFAY(米海軍横須賀基地)の空港バス案内PDFをダウンロード。
  • macOSの「プレビュー」でメタデータを確認。
  • 作成者(Author)項目から文書作成者を特定。

3. フライトの出発地点に注目(Flight From)

  • 動画内の航路図を元に出発点を推定。
  • 地図と照合し、陸上自衛隊 立川駐屯地と特定。

4. バスの番号から特定(Night Accident)

  • 車体のロゴ(SBS Transit)→ シンガポール
  • バス背面のLED表示→ 「52」「58」番のバス。
  • 両バスが共通で停まる停留所を調査(3箇所ぐらいヒット) → ストリートビューで場所特定。

5. 第二白川橋梁の流用元を特定(Bridge)

  • 動画後半の「パチンコ」「セブンイレブン」から熊本市内の場所を特定。
  • 第二白川橋梁は1953年の洪水後に架け替え
  • 論文「熊本県下における近代橋梁の発展史に関する研究」で、
    転用元:「澱川橋梁」 と記載あり。
  • 「澱川橋梁」では誤答、「淀川橋梁」で正答 → 表記揺れに注意。

6. 画像検索+複数サイトチェック(Object)

  • 指定座標をGoogle Earthで表示、白い構造物にピン。
  • 浮きドックに酷似 → 「浮きドック(ロシア語)」+地名で検索。
  • ロシア語でのプロジェクト番号と名称を取得。

7. 画像サイトから画像を特定(Afghanistan)

  • 動画のスクリーンショットを取得。
  • 画像検索+「AFP」「Afghanistan」などのワード。
  • Getty Imagesの該当ページを発見。ここに日付がある。
  • ダウンロードした画像の**EXIFに撮影場所(Camp Bostick)**が記録。

💡 Google画像検索では、画像をクリック → 「画像の配置場所」から開くとその写真を開ける。

8. OSMのAPIを叩いて特定(Convenience)

  • overpass-turbo.eu にてOSMクエリを実行。
  • コンビニ+スーパーが半径100m以内にある公園を抽出。
[out:json][timeout:120];
//---- 検索対象エリア:青森県 ----
{{geocodeArea:青森県}}->.pref;
//---- 店舗ノード ----
nwr(area.pref)["shop"="convenience"]->.conv;
nwr(area.pref)["shop"="supermarket"]->.sup;
//---- 条件を満たす公園(way のみ) ----
way(area.pref)["leisure"="park"]
     (around.conv:100)   // 半径100 m にコンビニ
     (around.sup:100)    // 半径100 m にスーパー
     ->.candidate;
//---- 結果を中心座標付きで出力 ----
.candidate out center;

💡最南端に表示されたものはincorrectだったため、2つ目を回答。

おわりに

質問やフィードバックがあれば、ぜひコメントください。

最後に、私の仲間によるWriteupもぜひご覧ください

Discussion