SWIMMER OSINT CTFに参加しました。
spine_rabbit という2人チームで参加し、結果は687チーム中103位でした。 あともう少しで2桁順位だったので悔しいですね。

解答数としては、最後の一問だけ解けずに時間切れという形でした。
OSINT CTFは初挑戦でしたが、特殊なツールやスキルがあまり必要なく参加しやすく楽しみながら問題を解くことができました。

参加証明書

ここからはwriteupということで、自分が取り組んだ問題についてまとめていきます。
問題はこちら

tgt_rain

rain_01_social

スクリーンショットに写っている投稿文を読み取って、Xで検索して特定。

rain_02_region

運営からのヒントをもとに以下の観点で画像を特定

  • ヒントから関東周辺の画像を除外
  • ヒントから写真内の文字列を使うようなので文字が含まれない画像を除外
  • 残った画像を眺めて文字の形がおかしいものや、存在しない駅名が写っているものなど辻褄が合わないものを除外

この時点で一つの画像に特定。
あとは画像内の広告を検索して枚方と特定。付近の候補になる駅をいくつかリストアップし、写真と各駅の構内図と照らし合わせて駅を特定して回答。
(あとでよく見るとややぼやけているが駅名の看板も写っていた。)

rain_04_source2

画像をGoogleレンズで検索して書籍を特定。

rain_05_date

画像中央にご招待・報道受付と書いた看板を見つける。 ここから何かのイベントが開催されていると推測。
場所は大阪城ホールのようなので2025年12月のイベント一覧を検索(大阪城ホールの公式ページだと2026年1月以降しか表示されていなかったのでweb archiveで過去の状態を参照)。 その中で1日開催のものを見つけてイベントページを見に行くと、看板に掲載されているロゴと一致するものを発見。
(感想戦を見ていると看板の画像をGeminiに入力すると文字起こししてくれたみたいです。Geminiすごい)

rain_06_ai

画像をexiftoolにかけるとツール名の記載を発見。

tgt_debeyohiru

debeyohiru_02_profile

debeyohiru_01_social で見つけたアカウント名をGitHubで検索。 ヒットしたアカウントのプロフィールページに記載されているURLを回答。

debeyohiru_03_email

プロフィールページに記載されているメールアドレスを回答。

debeyohiru_04_meal

blueskyの投稿にあった写真から特製デミソースのダブルチーズオムライスと思って解答するも不正解。
運営からのヒントに「Blueskyの情報をもとに、Googleマップのレビューを探してみましょう。」とあったため、テーブルの様子などからポムの樹 渋谷スペイン坂店の口コミを参照。 ターゲットのアカウント名と一致するアカウントの口コミがあり、そこから冬限定メニューを注文していたことが判明。 ポムの樹の公式サイトを参照して商品名を特定して回答。

debeyohiru_05_hidden1

プロフィールページのソースコードを眺めていたところscript.jsに名前の記載を発見。

debeyohiru_06_hidden2

運営からのヒントを参考に、archive.todayからの以下のURLで過去の状態を参照して回答。
https://archive.today/https://furaigo5.github.io/profile/

最新のプロフィールページに記載の内容は、blueskyの投稿から新年の初売りでスマートフォンを買い替えてプロフィールページを更新していることがわかるため、不正解となることがわかる。

tgt_lilica

lilica_01_social

「黄昏ブロッサムリリカ」をXで検索。

lilica_02_virtual_identity

「黄昏ブロッサムリリカ」をVRChatで検索。

lilica_03_virtual_world

画像に「#VRC_ナギサ を付けてくれたらハッピーです」とあるので、VRChat ナギサで検索してワールドを特定。
自分はVRChatに明るくないので知らなかったのですが、NAGiSAという1対1でおしゃべりができるワールドがあるようです。

lilica_04_domain

Xの投稿からドメインはtwilight-lilica.comと特定。
WHOIS検索して取得日を特定して回答。

lilica_05_hosting

Hosting CheckerにホームページのURLを入力してホスティングサービスを特定。
特定したホスティングサービスの規約違反通報メールアドレスをChatGPTに調べさせて回答。

lilica_06_name

Xの投稿を眺めているとfbxファイルをギガファイル便で公開しているものを発見。 ファイルをダウンロードしてChatGPTに解析してもらうとファイルパスが発見され、パス中に本名と思われる文字列があることからそれを回答。

lilica_07_work

本名のアルファベット表記をInstagramで検索するとアカウントが見つかる。
「昼休みに抜け出して散策するのが1番インスピレーション湧くかも #中目黒」という投稿があるので中目黒だと特定。
一応画像をGoogleレンズで検索すると中目黒駅近くの駐車場がヒットした。

research_2025

truck

与えられたPlus Codeから座標を特定。
Geminiにこの座標地点について聞いてみると事故の名所らしく、YouTubeの動画を教えてくれる。 動画中のトラックに記載のURLを読み取って回答。

satellite_imagery

Googleレンズで検索して新千歳空港と特定。
画像にある「ケータリングビル」も参考にGoogle Mapsで場所を特定。 その場所の航空写真と問題の画像が一致しているため、その航空画像の取得日(Google Mapsの左下などに小さく記載されている)を回答。

rage

画像左上の特徴的な猫の看板をGoogleレンズで検索。Ripndipというブランドがヒットする。
ニュースのタイトルからメキシコ首都であることがわかるのでRipndipのメキシコシティの店舗を検索して回答。

ops_swimmer

わからないまま時間切れ。 感想戦を見ながら大会後に回答。

日付

rainのXにある「さっき解散した! 何か新しいことが始まりそう予感」という投稿から特定。 同じくrainの1/3の投稿にあるハンバーグステーキがlilicaのXの投稿写真にも写っており、上記の「さっき解散した」が3人が解散したことを意味していると推測できた。

集合時刻

時間内にわからず。

感想戦から、以前の問題で判明しているdebeyohiruのGmailアドレスをghuntというツールを使ったり EPIEOSというWebサイトを利用することで、カレンダーの公開予定を検索できることが判明。 そこから集合日に登録されている予定を特定して時間を特定できる。 (日付と場所についてはrainとlilicaの情報から導けたので、debeyohiruの情報を使うのではというメタな読みをしていたが一歩届かず)

場所

lilicaのXの投稿写真にあるコップにDenny’sとあるのでデニーズのどこかの店舗だと絞り込み。 rainのXにある解散したときの写真をみると、品川区という記載があるので品川区にある店舗だと推測。 品川区にあるデニーズの店舗を検索すると「大井町駅前店」と「ThinkPark店」がヒット。 両者とも近い店舗だがrainの投稿に大井町駅の入場券があったことなどから大井町駅前店で回答して正解。