04/21 21:30 | 部員からのフィードバックでわかった別解法・嘘解法、およびコンテスト中の正答数を追記しました。
05/12 22:30 | 解法(想定解法)の実行可否を追記しました。
まえがき
2024年4月20日・21日に、競技プログラミングとCTFの体験イベントである「CPCTF2024」が行われました。
部員が作るコンピュータセキュリティ・プログラミングの問題に対して、新入生をはじめ興味のある皆さんに挑戦してもらうものです。景品も出ました。
本記事はOSINT問の作問writeupです。
普段はデザイン・映像らへんで活動していますが、競プロやCTFもかじっており、今回3問作る機会を頂きましたのでご紹介します。
OSINT問
いわゆるネトストです。web上の公開されている情報を利用して、場所・時刻・ユーザーを特定したり、真偽を判定したりが主題になります。
OSINTで使われやすいツールは、検索・SNS・カメラ・地理情報など。こちら が参考になるでしょう。
writeup
mokomoko (Newbie)
問題文
この問題は常時解答することができます。
綺麗な風景ですね。これはどこで撮ったのでしょうか?
撮影場所は何らかの施設のようです。施設が用いている電話番号を CPCTF{} で囲んで解答してください。ハイフンは入れないこと。
解法
画像の撮影場所を特定する問題です。…というと GeoGuesser が思い浮かびますが、newbie ということで知名度がある場所を選定しています。
Google Lens あるいは類する画像検索に放り込むと、画面に主に映っている植物が"コキア"であるとわかります。また、検索結果の一部に、"ひたち海浜公園"がサジェストされているのではないでしょうか。
https://hitachikaihin.jp/
国営ひたち海浜公園の名物は、みはらしの丘に広がる"もこもこ"のコキアと、青の絨毯のようなネモフィラです。国内にこれほどコキアが植わっている場所は他にありません。ひたち海浜公園の電話番号を HP で調べて FLAG が得られます。
CPCTF の時期はちょうどネモフィラが満開になっています。19日に観てきました。見頃は1週間ほと続くそうです。全休がある学生など行ってみては?
FLAG
CPCTF{0292659001}
結果
10.00pt / 97 solved
ヒントなし | ヒント1 | ヒント2 | ヒント3(解法) |
---|---|---|---|
93 | 4 |
leaving (Easy)
問題文
本問題は2025年3月以降、解答が難しくなる可能性があります。
電車に忘れ物をしてしまいました。事情があって、できれば駅員さんに言わずに回収したいのです。でももう数時間たっているんですよね……置きっぱなしなら嬉しいのですが。
スマホから今日の写真が出てきました。
忘れ物をしたことに気付いたのは15時ちょうどです。まだ誰にも拾われていなかったとすると、忘れ物を載せた電車が次に停まる駅はどこでしょうか。
解法
書き手は人に言えない良からぬ物を運んでいて、不幸にも電車内に忘れたようです。ただ、あとで駅に忘れ物を問い合わせても届いていない……というのは、CTFをやっているかどうかにかかわらず遭遇しうる状況ですね。原因として、そもそも拾われずに電車に置きっぱなしであることが考えられます。電車が終点についたら、特に車内の見回りをせずに、折返しの客を載せる場合があるからです。
乗った電車を特定したうえで、その折返しの電車を調べるのが解法です。駅の掲示板に "普通(当駅始発) 10:25 熱海" と書かれています。熱海は東海道線の駅。列車の特定は乗換案内の時刻表機能をしらみつぶししたり、画面に映っている他の電車の行き先表示、或いは"当駅始発"を参考にしてもよさそう。
書き手が乗った列車は 10:25 浜松発 熱海行きと判明します。Yahoo乗換案内
終点につくのは13:04で、来た方向(浜松方面)へ引き返すのでは?と予測して、13:14 熱海発 豊橋行きで張ります。15:00 以降に最初につく駅が答えです。
また、電車には"運用"があり、終点についた車両が次にどの列車を担当するか、あらかじめシフトが決まっています。今回は静岡県内の東海道線なので、東海道線静岡地区運用情報 という有志サイトを活用できます。こちらのサブページの"運用表"をスクロールして、"A50"という欄に該当の列車が記載されていますね。その日の終わりまでどの列車に使われる予定かがわかります。
サイトの存在を前提に 15:00 ではなく16:30 や 17:00 を問う選択肢もありましたが、鉄道マニアかどうかで差が開きそうなので見送りました。
ちなみに、作問者は4月上旬に 10:25 の電車を乗り通しましたが、終点ではそのまま客を入れ替えて発車していました。忘れ物したら置きっぱなしの確率が大きいです。
別解法
東海道線まで決まった後に、駅名を総当たりする
FLAG
CPCTF{kanaya}
結果
174.09pt / 44 solved
ヒントなし | ヒント1 | ヒント2 | ヒント3(解法) |
---|---|---|---|
38 | 1 | 1 | 4 |
passing (hard)
問題文
本問題はSNSアカウントの削除(凍結)に伴い解答不可になりました。
YouTubeに投稿された動画の撮影場所と撮影日時を特定してください。
https://youtu.be/A1cnWeUiitk
解法
SNSを回ってネトストする愉快な問題です。
駅名 : 駅のように似た画角が出回る場所なら Google Lens などで一発です。JR飯田線の三河槙原駅が該当します。
日付 : 投稿者や、その知人のSNSから行動を読み取る手法が想定されます。まず YouTube に上がっているもう1本の動画から Xアカウント @ichikami412657 、会話相手の @tym10926datera を見つけます。しかしこの人は鍵垢。
さて、同一人物の他アカウントを調べるツールに sherlock があります(レビューで知ったのですが、最近上手くでてこないんですね……)。もしくは有名どころのSNSで同じIDを検索してみると、インスタに公開アカウントがあるようです。
動画のスクショを旅行の1日目だとして投稿しているので、続きの投稿をみます。想定解は4日目のフェリーの"デビュー日"という記述からです。これは名門大洋フェリーの「フェリーふくおか」で、2022年3月28日に初航海(福岡県の新門司港発)を迎えたとわかります。(参考)
「フェリ-きょうと」も最近デビューしましたが、その初航海は大阪発なので外れます。
時刻 : 三河槙原駅の航空写真と建造物の形状より、動画が南を向いて撮影していること、影の向きから時間が午後とわかります。また、"天竜峡"行きの電車が到着している事(あるいは行き帰りの電車が待ち合わせている事)と、駅の時刻表とを照らし合わせると、あり得る撮影時刻は1つしかありません。X上での会話の通り、関係する飯田線の時刻は変わっていないので、現在のデータで調べて構いません。
撮影日時は実際と同一で、長野県の上諏訪から豊橋へ約7時間走り通す普通列車に乗った際の、反対列車待ち合わせの様子です。インスタにあったその先の行程も、作問者の旅程と同じにしてあります。
着実に特定できますが、いくつか難しいポイントを設けました。一方、開始1時間半で最初の正解(しかも Hard で最初の正解)が出たので、穴場になった可能性があります。
別解法
- 駅前の空き地と線路との間に柵がついたのは2021年であること、人間の服装が春・秋物であることから、日付を全探索する。
- ダイヤ改正直後に旅に行ったと推定し(これ自体はミスリード)、直近に改正があった2022/03/12以降で全探索する。
嘘解法
- 作問者である @dan_dan が旅先で撮影したと仮定して、"飯田線"でtraQ(部内SNS)の過去の投稿を検索し、本人の行動から日付を特定する。
(約三名が正解しています。これは作問者が迂闊でした。とくに外部から参加の方、申し訳ございません)
FLAG
CPCTF{mikawamakihara_20220325_1450}
結果
400.81pt / 12 solved
ヒントなし | ヒント1 | ヒント2 | ヒント3(解法) |
---|---|---|---|
7 | 0 | 0 | 5 |
おわりに
純粋Geoguesser問もいくつか考えていましたが、なんだかんだ画像検索で割れやすい(割れないものは適切なヒントを考えるのがつらい)んですよね。最近のAIはすごい。
一方で、作問用に新たにつくるようなアカウントは間違いなく旧Twitterのサーチバンを食らうなど、(こちら目線では)不都合な変化もあり、詰まないように当初案から見直したりしました。
OSINT問は自分の他に @kaitoyama @kenken の問題が掲載されました。こちらも解きごたえがあったと思います!楽しんでいただけたら幸いです。
CPCTF2024参加者ならびに admin の方々、ありがとうございました(そしてご迷惑をおかけしました)。