[AVTokyo] Open xINT CTF 2023 Write-up
はじめに
AVTOKYO2023で開催されたCTF「Open xINT CTF 2023」のwrite-upです。今年参加された方々のみならず、来年度以降参加される方の参考になれば幸いです。
2022年(チーム戦)に引き続き、今年の個人戦でも1位を頂くことができました。連覇出来て嬉しいです。
以下、問題文および問題画像はOpen xINT CTF 2023から引用しました。
解法部分はネタバレにならないようにトグルで表示するようにしています。
Category: GEO
✅ Amusement (50 Points / 133 Solves)
ここの施設の名前は?
What is the name of this facility?
解法と答え(クリックで表示)
右クリックからGoogle Lensで画像検索(Reverse Image Search)を行うと、さがみ湖リゾートプレジャーフォレストであることが分かります。
さがみ湖リゾートプレジャーフォレストがFLAGです。
なお、後日行われた振り返り会でpinjaの方が「表記揺れにも対応している」と話しておられたので、「相模湖リゾートプレジャーフォレスト」や英語表記などでも通ると思われます
✅ mural (200 Points / 70 Solves)
この壁画が描かれた建物の位置座標を答えてください。
フラグ形式: 7桁のplus code
(画像出典: https://iranprimer.usip.org/blog/2022/feb/09/irans-revolution-43-politics)What are the coordinates of this building with a mural?
Flag format: 7 digits plus code
(image: https://iranprimer.usip.org/blog/2022/feb/09/irans-revolution-43-politics)
解法と答え(クリックで表示)
muralは「壁画」を意味する英単語です。さほど一般的な単語ではないのですが、あるゲームのプレイ経験がある方にはお馴染みかもしれません。
閑話休題。ホメイニが描かれていますが、これは分からなくても大丈夫です。まずはシンプルにLensに通してみると、イラン政治を象徴する壁画としてあらゆるニュースにイメージ画像として使われている事が分かります。
その中で地名らしきものが書かれているFlickrの画像が見つかります。
テヘランのEnghelab Squareという場所のようです。
ここまではたどり着いたのですが、実はここには別の壁画があり、「これが描き変えられたもの??」などと迷ってしまいました。(Enghelab Square Mural
で検索すると、そちらがヒットしたりします。)
ストリートビューより
そこで先ほどのFlickrの画像に戻ってみると、Meydan-e Enghelab Line 1 と描かれたバス停のようなものに気付きました。
https://www.flickr.com/photos/ninara/41361150950 より
Meydan-e Enghelab
だけで検索すると地下鉄駅がヒットするのですが、地下鉄というよりはバスのように見えるので違いそうです。結果から言うとこれはテヘランBRTのバス停なので、Enghelab Square付近で近隣のバス停を探します。
Google Mapsより
ストリートビューで確認すると、バス停と壁画が一致します。
Google Street Viewより
この建物をクリックして表示されるP92V+G25がFLAGとなるPluscodeです。
(正確なものは失念したのですが、おそらく若干のブレは解答の許容に入っているはずです)
✅ Esta rico! (200 Points / 32 Solves)
このお店の電話番号は?
What is the phone number of this shop?
解法と答え(クリックで表示)
まず、適当にGoogle Lensに入れた限りでは太刀打ちできませんでした。中身を人力で読み解いていくことになります。
手前の「豚肉のオーブン焼き」を検索しても、レシピサイトなどがヒットして絞り込むのが難しかったです。
冷蔵庫を見ると、市外局番055のマグネットが貼ってあります。
静岡県静岡県御殿場市、駿東郡小山町であるとヒットします。少なくともこの周辺に店があると推測できます。
横を見ると「サルチーニャ」のように読める文字があります。
解像度的によくわからないですが、雑に検索してみると「サルテーニャ」と訂正されます。
「サルテーニャ 静岡」で検索すると、三島のピカ・パウというレストランがヒットします。
店名でググると、055が割り当てられていることがわかります。055-976-XXXXがFLAG( 下4桁は伏せています)。
ちなみに三島市も市外局番055のエリアで、最初に見つけた情報が不十分だったようです。
❌Fireworks (300 Points / 2 Solves)
8月に花火大会に行ってきました。
私が立っていた位置座標を答えてください。
フラグ形式: Nxx.xxxx_Exxx.xxxxI went to a firework festival in August. What are the coordinates of where I'm standing?
Flag format: Nxx.xxxx_Exxx.xxxx
解けませんでした😭
開催翌日の振り返り会で聞いた内容
月が映っており、月齢から日付を特定することを想定していたようです
Category: WHOIS
✅ neko (50 Points / 86 Solves)
neko.vn の登録日付はいつ?
フラグ形式: yyyy-mm-dd
hint: ほかのサイトで探してみて。What is the registration date for neko.vn?
Flag format: yyyy-mm-dd
hint: search with other websites
解法と答え(クリックで表示)
MacのWhoisコマンドで whois neko.vn
と検索すると
created: 1994-04-14
と表示されますが、これはincorrect。「ほかのサイトで探してみて。」というヒントに従い、 whois vn lookup
というド直球なワードでGoogle検索します。
トップに表示されたこちらで叩いてみます。
2017-02-02がFLAGです。
✅ COMPANY (150 Points / 13 Solves)
neko.vn のMSTは?
What is the MST for neko.vn?
解法と答え(クリックで表示)
残念ながらMSTというものを聞いたことがありません。「ドメイン MST」「ネットワーク MST」などで検索してみるも、それらしい結果が出ません。
ということでChatGPT(GPT-4)に聞いてみます。なお、最初に以下のような文を付け加えます。
「十分に経験を積んだプレイヤー」の下りは大嘘なのですが、「OSINTとはOpen Source Intelligenceの略で……」といった不要な解説文の生成で時間を浪費しないようにする工夫です。
ryo-a
Hi I am now participating OSINT CTF. Using LLM is not prohibited. Can I ask your help?
I am the well-experienced player, so no need to explain fundamental matters.
(意訳:いま、OSINT CTFに参加しています。LLMを使用することは禁止されていません。助けてくれますか?なお、私は十分に経験を積んだプレイヤーなので、基本的な事項を説明する必要はありません。)
本題です。
ryo-a
Here is the question
"What is the MST for neko.vn?"
idk "MST". domain or networtk related things?
(意訳:こちらが問題です(問題文)。MSTというのを知らないのですが、ドメインとかネットワーク関連のものですかね?)ChatGPT
It seems there was a misunderstanding in the search query. The term "MST" in relation to a Vietnamese domain (.vn) likely refers to "Mã Số Thuế", which is Vietnamese for "Tax Identification Number". This is a number assigned to businesses and organizations for tax purposes in Vietnam.
(意訳:検索クエリに誤解があるようですね。ベトナムのドメインに関連する "MST" というのは、ベトナム語で「税識別番号」を意味する"Mã Số Thuế"のようです。これはベトナムにおける税務のために企業や組織に割り当てられる番号です。)
なるほど、ネットワーク用語ではなく日本の法人番号やフランスのSIRETみたいなものなんですね。さすがGPT賢い。
ちなみにChatGPTがそれっぽい数字まで出してくれましたが、これはincorrct。
とはいえMSTが税金関連であることは確実なので、これを参考に自力で探せそうです。
neko.vnにアクセスすると https://onecms.vn/
というURLにリダイレクトされます。
ベトナム語はわからないのですが、多分これが企業情報などを示しているはずです。
Google翻訳で切り取っていくとCÔNG TY CỔ PHẦN CÔNG NGHỆ NEKOまでが社名であることがわかります。とはいえ実際は CỔ PHẦN CÔNG NGHỆ NEKO
などで検索しても大丈夫です。
CÔNG TY CỔ PHẦN CÔNG NGHỆ NEKO MST
で検索すると以下のようなサイトがヒットします。
https://masothue.com/0107742974-cong-ty-co-phan-cong-nghe-neko
0107742974がFLAGです。
Category: MISC
✅ Aircraft (100 Points / 61 Solves)
この機体のモデル名は?
フラグ形式: [A-Z]+-\d+[A-Z]+
https://1drv.ms/v/s!AmBkM-TKj1UtisAkIbSDFG8xxXWAOg?e=tJ9WkVWhat is the model of this aircraft?
Flag format: [A-Z]+-\d+[A-Z]+
https://1drv.ms/v/s!AmBkM-TKj1UtisAkIbSDFG8xxXWAOg?e=tJ9WkV
添付されていた動画はこちら
解法と答え(クリックで表示)
C-130J(即答)。
これは航空オタクの勘で一発正解したので正攻法がわからないです……。
開始4分でFLAGを得た
ちょっと冷静になって考えてみると、
- 形状からしてC-130の派生型なのは間違いない(Google Lensでも出ます)
- 100点問題なので多少慈悲があると思われ、マイナーな機種ではない
- よく見ると星条旗のようなものが垂直尾翼にある
といった条件、そしてフラグ形式として表示されている正規表現から絞れると思います。
Category: AI
✅ REVERSE AI (100 Points / 40 Solves)
この生成AI画像は、ある文学作品の冒頭部分を画像イメージにしたものである。この文学作品のタイトルを答えよ。
This AI-generated picture depicts an opening of a literature. What is the title of this book?
解法と答え(クリックで表示)
ChatGPT助けて!!!
課金(GPT4)が画像も読めるので課金パワーで殴ることを試みます。
ryo-a
This is the image generated by AI. The prompt is from some literature. I need to guess the title of that. Any thoughts? (画像を添付)ChatGPT
(一部省略)
Given the details, the prompt for this image might be derived from classic literature that includes such scenes. Some possibilities could be works by authors like Jack London, known for "The Call of the Wild," which often portrays human and animal interactions in the wilderness, or perhaps something from the romantic poets who celebrated nature, though the presence of guns and hunting dogs would likely point towards a more adventure-oriented narrative.
incorrect!!! はい、Open xINT CTFは課金で解決できるほど易しくありませんね。
条件を加えたりしつつ、ChatGPTに "Any thoughts?(なんか思いつかない?)"などと聞き続けるも、正解に至れません。
技術的な正攻法があるのかと考え、Stable Diffusion Web UIにあるPNG Infoを取得しようと試みるも、何も得られませんでした。
そうこうしている間にSolves(正解者)が続々増えていきます。しかも100点問題、そんな難しいはずはないように思えます。
そこで最近解いていたフランスの常設CTFを思い出すと、OSINT CTFはどうしても作問者の癖が出るよな……という点に思い当たります。特に文化やミームなどに関係する問題は、作問者の母国や言語などが大きく影響します。
自分が把握する限り、xINT CTFのorganizerであるpinjaは全員が日本拠点で活動しているはずです。完全な勘ですが、状況から「日本の有名な小説なのでは?」というものが思いつきます。
ということで青空文庫のランキングを上から順に冒頭だけ眺めていきます。
少なくとも「夢十夜」「駈込み訴え」ではないだろと思いつつもほぼ全部見た
注文の多い料理店
二人の若い紳士が、すっかりイギリスの兵隊のかたちをして、ぴかぴかする鉄砲をかついで、白熊のような犬を二疋つれて、だいぶ山奥の、木の葉のかさかさしたとこを、こんなことを云いながら、あるいておりました。
これや!!ということで注文の多い料理店がFLAG。
我ながらこれは筋が悪かったと思います。
Category: BUS
✅ BUS (200 Points / 51 Solves)
このバスの座標を求めよ。
フラグ形式: Nxx.xxx_Exxx.xxxAnswer the coordinates of this bus.
Flag format: Nxx.xxx_Exxx.xxx
解法と答え(クリックで表示)
対向車線にナンバープレート「844」の日野のポンチョが居ますね。今回の問題は車種を知らなくても影響ないですが、バスマニアの方が書いているサイトなどを絞る上では車種が分かると便利なケースがあります。
とりあえず、Google Lensでここを囲んで画像検索をすると、日光~足尾を結ぶ日光市営バスの車両である事が分かります。写真と同一の車両の側面に「Ashio」と書かれているので、基本的にはこの路線に投入されると見てよいでしょう。
https://www.tobu.co.jp/cms-pdf/releases/2022111812340749OCgg7UI3xPbRt0PUhNNA.pdf
https://kitabus.net/kokyo-bus/80-ashio.html
また、カーナビに国道122号線が表示されています。
そして、Google乗り換え案内で日光駅~足尾を検索すると、122号線を走る日光市営バスが表示されます。
Google Mapsより
Q:バスで50分近い道のりから撮影地点をどう探すんですか?
A:根性
なんとなく雰囲気から足尾側に近そうだなということで、足尾から絞り込み始めます。これで日光側だったらかなり負けです。
雑に道路の線形が一致しているところを衛星画像から絞り込み、ストリートビューに降りて山側の擁壁が一致するところを探します。電線も手がかりにします。
ここだ!
地面の速度制限表示から少し過ぎたあたりを走行しているので、そこの座標を取得して丸めます。
N36.676_E139.484がFLAGだったはず。
❌RIDE A BUS (500 Points / 0 Solves)
私は日本に初めて来た、電車は高い、東京からバスで行く。
サイトで見たバス停の名前が間違っていた。
このトンネルをくぐると歴史的な日本だと紹介された。
たくさん歩いた。
このトンネルの座標は?
フラグ形式: Nxx.xxx_Exxx.xxxIt's our first visit to Japan. Trains are expensive, so we took a bus from Tokyo to visit the place.
We found the bus stop we need to get off, but the name on the website was incorrect.
We were told to walk through a tunnel to get to the historical area. We walked a lot.
What are the coordinates of this tunnel?
Flag format: Nxx.xxx_Exxx.xxx
解けませんでした😭
Category: SOCIAL
❌cosplayer (200 Points / 4 Solves)
下記のURLに投稿された、恐竜に扮したCCさくらのコスプレイヤーの方は昔、
人間のCCさくらのコスプレイヤーの方と2ショットを撮っています。
人間のCCさくらのコスプレをしていた方のX(Twitter)ユーザ名を答えてください。
https://x.com/MikeCovers/status/979804843543056384?s=20
フラグ形式: pinja_xyzThe dinosaur-version CC Sakura cosplayer took a photo together with a human-version >CC Sakura cosplayer in the past.
What is the X (Twitter) username of the human-version CC Sakura cosplayer?
https://x.com/MikeCovers/status/979804843543056384?s=20
Flag format: pinja_xyz
解けませんでした😭
✅ pet (200 Points / 17 Solves)
この場所の開園式を撮影したカメラマンは、今は引退してゴルフを楽しむなど余生を謳歌している。
そんな彼を長年支えてきたペットの名前は?The photographer who took a shot of the opening ceremony of this place, now retired, enjoying his life playing golf, etc.
He has a long-time companion animal that supported his life. What is the pet's name?
解法と答え(クリックで表示)
Google Lensから、バンクーバーのPortal Parkであることが分かります。開会式の写真がないかとportal park opening ceremony
と検索しますが、特に何も出てきません。
ここで portal park vancouver opening ceremony
と地名を入れると "Unidentified man speaking at Portal Park opening"というタイトルでバンクーバー市の画像アーカイブサイトがヒットします。
著作権の欄に写真家の名前があります。
検索するとLinkedInが表示され、本人の名前を冠した企業が経歴として表示されます。
カメラマンであることが確認でき、問題の条件に合致します。
この名前でFacebookを検索すると、本人のアカウントがヒットします。
投稿された画像からゴルフをしていることが確認できるほか、猫の画像も定期的にアップロードされています。
17歳のねこさんということで、「長年支えてきた」ということにも一致しますね。
なるほど、Breeという名前のねこさんなんですね~と思ったらincorrect。ウソ!?
飼い猫ではないのか!?と思い、他のペットらしき名前などを探すも見つからず。
まさかと思いながらBree Breeを試すと正解。これがFLAGでした。
受験参考書かよ
Category: CRYPTO
✅ Bitcoin (200 Points / 18 Solves)
2021年11月に結婚したIlyaが所有していたとみられるBitcoinのアドレスは?
What is the Bitcoin address of Ilya who married in 2021 November?
解法と答え(クリックで表示)
Ilyaって誰ですか……?
さすがにググったら出る程度の人物だと信じて ilya november 2021 married
という何の捻りもない検索ワードをGoogleに放り込みます。
すると、以下の記事が出てきます。Sunかあ……まあゴシップっぽいですが、The two got married in November 2021, in an extravagant wedding that Morgan described on Instagram as "surrealist."
という記述があります。とにかく、フルネームはIlya Lichtensteinで、Heather Morganの配偶者ということが分かります。
しかしSunの記事ではアドレスがわかりません。Ilya Lichtenstein bitcoin address
という、再び捻りのない検索を行います。すると、TwitterにOSINTアカウントの投稿がヒットします。
そのツリーにある投稿にアドレスが記載されており、bc1qazcm763858nkj2dj986etajv6wquslv8uxwcztがFLAGです。
Category: ONSITE
✅ [HUMINT]AVTOKYO (200 Points / 20 Solves)
あの狂信的なアイスキャンディ団から熱心な勧誘を受けている人が複数名、AVTokyo会場にいるとの情報を得た。彼らはすでに信者から貰ったチャームを身に着けている。誰でもいいから、入団を思いとどまらせてほしい。方法は、簡単。その人物を見つけたら、本イベントのキャッチフレーズを唱えながら乾杯するだけ。成功すれば、フラグが渡されるので、それを入力せよ。
※乾杯チャレンジは、休憩時間のときだけやってください。We have been informed that there are several people at the AVTokyo venue who have been enthusiastically recruited by that fanatical popsicle group. They are already wearing charms given to them by the followers. We would like to discourage any one of them from joining the group. The method is simple. When you find that person, give a toast while chanting the catchphrase of this event. If you succeed, you will be given a flag.
*Please only do the toast challenge during breaks.
解法と答え(クリックで表示)
狂信的なアイスキャンディ団 is 何?
英語の fanatical popsicle group
で検索してもこの調子です。元ネタがわからん。
ただ、チャームを付けている人に話しかけるとQRコードが出てくる話はxINT CTF 2019に存在していたとmeowさんのwrite-upで読んだことがあります。
削除されたツイートがTogetterに残っていたもの
ここで アイスキャンディのチャームを付けている人に話しかけるとQRコードを見せてもらえる という仮説を立てます。
まるでスリが物色するかのように参加者を不審な目で見回しながら色々練り歩いていたところ、pinjaブース前で偶然1人見つけ、話しかけて「no drink, no hack」と合言葉を言うとQRを見せてもらえました。
そこには handed と文字列が表示されており、これがFLAGですが、次の問題に続きます。
なお、後述するagainstおよびplayedもFLAGだと思われます。
アイスキャンディチャームの裏にQRコードが記載されていた
✅ [HUMINT]join (200 Points / 2 Solves)
もし全員見つけた場合は、全員からもらった単語を組み合わせると、特定の位置を発見することができる。
その位置にあるもののプラスコードの7文字を求めよ。If you have found all the recruited persons, combine all the flags together, and you'll be able to find a place with an object standing. What is the 7 digits plus code of the object?
解法と答え(クリックで表示)
"handed"という単語を貰い、「なんかこれwhat3wordsっぽいな」とひらめきます。(類題: HEXA OSINT CTF v2 "Owlmost there")
とすると、あと2人見つければ良いわけです。
会場を歩き回りつつ、AVTOKYOで実施されているプレゼンを観察していると、プレゼンを前列で聞いている方の中にチャームをぶら下げた方が2人居ました。探し回る手間が省けてラッキーです。
プレゼンが終わるのを待って、先ほどと同様に声を掛けると、against と played という単語を貰えました。
ただ、並び方は不明です。ここからは(3 * 2 * 1=)6通りのパターンを試すだけですが、海外の海や山の座標を示す組み合わせが多い中、1カ所だけ秋田県でハチ公像を示す handed.played.against
が見つかります。
ここをGoogle Mapsで取得した時に表示されている7HP4+RFがFLAGです。
「全員」とは書いてありますが、合計何人見つければ良いのかは明示されていないため、早い段階でwhat3wordと気付くのが重要だと思います。
❌[SIGINT]FIND SPY (400 Points / 0 Solves)
私はある闇取引でスパイを追っている。そのスパイは、AVTokyoというイベントに参加しているようだ。スパイのアカウントを発見し、発信している情報をつかめ。
I am following a spy in the investigation of a backdoor deal. The spy seems to be participating in an event called AVTokyo. Find the spy's account and find out the information he is sending out.
解けませんでした😭
開催翌日の振り返り会で聞いた内容
Telegramの「近くの人を探す」機能を使うものだったそうです。なるほど、闇取引といえばTelegram……
✅ [SIGINT]SIGNAL (600 Points / 2 Solves)
我々は不審なデバイスを見つけた。デバイスを発見して停止コードを書き込むことで、そのデバイスの不正な動作を一定期間止めることができる。デバイスの動作を止めよ。
We have found a suspicious device. Find the device and write a stop code to the device: it will stop the device's unauthorized operation for a period of time. Stop the device.
解法と答え(クリックで表示)
まず、不審なデバイスの正体を突き止める必要があります。
過去のOpen xINT CTFではBLEを利用した問題が出題されていたらしく、今回もBLE関連ではないかと思いつつ、BlueSea BLE Debuggerを立ち上げて探索しますが、それらしきものは何も見つかりません。ではWi-Fiか?と思ってMacのairportコマンドを使いましたが、こちらも怪しいデバイスは見つかりません。
もしかしてSSIDを隠匿したデバイスがあり、表面に何か書いてあるのかという仮説を立ててあちこち探しましたが、アロマディフューザーのような物体が見つかる程度でした(PCを持って練り歩き、首をかしげていたのでスタッフさんから「Wi-Fiですか?」と声を掛けられました。紛らわしくてすみません)。
そこでpinjaから以下のような告知が。
Discordでもpinjaのawamoriさんが「ブースにいらっしゃいませ」と案内。
ということで遠慮無くブースに突撃します。近づいたところで目視できるものはなく、ブースに身を乗り出したところでヒントがあるわけではないのですが、ラップトップを抱えていたところpinjaから「スマホでやってないんだ」的な発言を小耳に挟みます。
これ、わりと重要なのでは???
確かに相変わらずBlueSea BLE Debuggerでは分からないのですが、Androidに入れておいたnRF Connect for Mobileを表示するとxINT_CTF_Flagなるデバイスが映っているではありませんか。そういえば家で試したときもBlueSeaよりnRF Connectの方がデバイス名見るのは楽でしたね……なんでPCから叩いてたんだろう。
他の方のwrite-upを見るとkn1cht氏は初手でスマホからトライしていたようで、BLEはPCよりもスマホから試すのが王道みたいですね。
ということでターゲットを確認できたのは良いのですが、何をすれば良いかわかりません(noob)
このデバイスの「Unknown Service」にある「Unknown Characteristic」の値に"beer please"とあるので、これをトライしますが、incorrect。
前述のFind Spy問の糸口が掴めずにこれがスパイが「発信している情報」なのか?と混同していた節もあり、慌てて質問を書きました。すると「問題を読んで」という回答を貰います。
CTF名物「問題文を読まないで早とちりするプレイヤー」
素直にもう一度問題文を読むと「停止コードを書き込むことで」とあります。確かに能動的に停止コードを書きに行ってないですね。
もう一度BLEの情報を読み直し、Properties: WRITE に気付きます。書き込めるんかいお前。
"beer please"に従い、 beer
を書き込みます。すると flag{no_beer_no_hack_BLE}
が得られます。
ただ、flag{no_beer_no_hack_BLE}
でもno_beer_no_hack_BLE
でもincorrectとなりました。
さすがに明らかに変だと思い、ラップトップとスマホを抱えてpinjaブースに乗り込んで「これ変じゃないですか?」とCTFdの画面を表示しながら質問します。そこで「これ取れてるなら合ってるはずで、もし通らないならFLAGの調整をミスった可能性がある。文字列削ってみて」との返答を貰います。
ということで最後のアンダースコア以降を削り、 no_beer_no_hack でFLAGを通せました。
xINT 2022やHEXA v2でもそうでしたが、少しでも疑問を感じたら運営に聞きに行く姿勢は大事だなと思います。ルール上も公式からヒントを得る事は禁止されていないので、参加者としてはそのルールを最大限活用したいところです。(もちろん、1問ずつ聞きに行くとかは流石に迷惑ですが……)
https://openxintctf.wixsite.com/pinja/post/禁止事項---prohibited-activities(2023)
ちなみにこのエリアで壁にベッタリ張り付いて解いていました。ちょっと空調が寒かったです。
Category: HISTORY
❌Otokichi (500 Points / 0 Solves)
山本音吉の2番目の妻との間に生まれた長男が息を引き取ったとされる場所に、現在はとある建物が建っている。
その建物の名前を答えよ。The place where the first son born to Otokichi Yamamoto's second wife have take his last breath, now stands a building.
What is the name of this building?
解けませんでした😭
感想など
初参加の2022年に引き続き、2回目ですが連覇させて頂きました。月並みな感想で恐縮なのですが、1位を取れると思っていなかったので率直に嬉しいです。これに尽きます。
昨年のチーム戦では、40548Fのチームメイトにかなり助けられました。今回の個人戦でどれほど成果を出せるか疑問で、せめてトップ10に入れば御の字かな……と思っていました。
根性で解決したり、他の方は解けているのに自分は解けていない問題があったり、まだまだ改善の余地があると感じているため、今後とも精進して参ります。
以下、来年以降に参戦される方の参考になればと思い、今回採った戦略などを書いておきます。
戦略と経過
ryo-aが各問を解答した時間
チーム戦から個人戦になったことで多少の慈悲があるかなと期待していたのですが、問題がオープンされた瞬間に、問題数が昨年とほぼ変わってないことに苦笑いします。
14時の開始と同時に自分のメモ用にGoogle Docsを作成し、見つけた情報などをここにペタペタ貼っていきます。これはチーム戦の時からの習慣なのですが、個人戦でも効きますね。
とりあえず、立席のテーブルを陣取った後にAircraft
からsolveしました。続いてneko
、Amusement
と易しめの問題をsolveしました。ここまで開始から8分です。しかし、そこから1時間50分ほど何もsolveに至れませんでした。
初動はかなり良かった
この間は特に何もしていないわけではなく、複数の問題を反復横跳びして徐々に進めていきます。OSINT CTFはどうしても「閃かないと解けない」「間違った方向に掘り進めていて冷静にならないと解けない」という場面が多くあるので、詰まったら意識して別の問題に切り替えるようにしています。
1時間50分ほど進捗がない様子(順位表でも沈んでいた)
そして1時間30分経過したあたりで立席で足が限界になり、邪魔にならない場所を探して地面に着座したところ、mural
、Esta rico!
、pet
、Bitcoin
と4問を10分ほどでsolveします。これは反復横跳びが功を奏しており、「FLAGまであと少しで行けそう」みたいな状態でスタックしていたものが一気に進みました。今回一番気持ちよかった瞬間かもしれません。
座ったら問題が解ける
「座ったら問題が解ける」はあながち冗談ではないと思っています。CTFはどうしても集中力を使う競技なので、それを阻害する要因を出来る範囲で無くしていくのが大事なのかなと思います。(偉そうなこと言っていますが、「運動不足で立っていられなくなって座った」以外の何物でもありません。)
この辺りでSolves、つまり「何人が解いたか」の記録をチェックします。これは「限られた時間でどの問題に注力すべきか」という優先度付けのためです。Open xINT CTFはそもそも制限時間内に全問解答されることを想定していないようで、時間内には解けない超難問が出題されることがあります。間違ってそれに注力してしまうと大幅なロスになるため、「他の参加者は複数名解けているが、自分が解けていない問題」を探します。
Solvesは大事な情報です
この時点の解答数からBUS
は根性でなんとかなると判断し、やはり根性でストリートビューを探索してSolveします。
続いて、ChatGPTと戯れながら放置していたCOMPANY
をsolveしますが、最初からChatGPT頼みだったREVERSE AI
の正解には至れません。こちらもSolvesを見ながら「難問ではないはず」と判断して戦略を変更し、根性でsolveします。
この時点で17時30分頃でした。難しいと感じた問題(RIDE A BUS、Fireworks、cosplayer、Otokichi)のSolvesが増えないことから、ここからは配点の高いオンサイト問題に注力する方向にシフトします。
この時点で比較的Solveされていた[HUMINT] AVTOKYO
をsolveし、閃いたのでそのまま[HUMINT] join
に注力してsolveを達成します。
HUMINT 2問解いた時点での点数
この時点で暫定1位になってはいたのですが、500点問題や600点問題が解かれると逆転されてしまうため、SIGINTに注力します。[SIGINT] Find Spy
か[SIGINT] SIGNAL
のどちらかが解けたらいいなと考えつつ、1時間近く苦戦して[SIGINT] SIGNAL
を19時前にsolveします。
ここである程度やり切った感じはあるのですが、まだ残り30分程残っています。なんとか逃げ切れることを祈りつつ、あわよくば解けないかと思ってFireworks
問題に挑みましたが、結局solveできず2450点でタイムアップとなりました。
事前対策
- 昨年までの問題、特にオンサイト問題が出されていたコロナ禍以前のxINT CTF問題の確認。
- フランスの常設CTF「Challange OSINT」
- 本当に難しいので、そういったもないにどういうアプローチが取れるか検討する訓練として取り組んでいました。ここではkn1cht氏に負けているので勝ちたい。
物理的に持参した装備
- PC(MacBook Air M1)
- 2年くらい前に買ったRAM 16GBのMac。OSINT CTFは特にマシンパワーがモノを言う問題はないので、特にスペックは関係ないと思います。
- とはいえ「もし、マシンパワーやOSのせいで解きづらい問題があると悔しい」という理由で、自宅のWindowsマシンを起動したままで、Parsecで接続できるようにしておきました。
- Android端末
- ごく普通のAndroid端末です。
- ポータブル電源
- 会場にコンセントがないと聞き、防災用に持っているAnkerのポータブル電源を持参しました。めちゃくちゃ重いですが、PCのバッテリ残量を気兼ねなく使えたので良かったです。ただしめちゃくちゃ重い(大事なことなので2回)。
- Wi-Fiルーター
- 過去の参加記を読んでいると、会場の回線が貧弱であるとの記述が散見されました。自分の使っているSIMではテザリングするとコストが高くなりそうなので、1日単位でレンタルできるWi-Fiルータを持参しました……が、予想以上に会場の回線が強化されており、使う必要はありませんでした。今後は回線問題を気にしなくて良さそうですが、もし会場が変わった場合などは持って行った方が無難かもしれません。
Discussion