Open xINT CTF 2023 writeup by Kuro

# 概要
　AVTokyo 2023で開催された[Open xINT CTF 2023](https://openxintctf.wixsite.com/pinja/post/%E9%96%8B%E5%82%AC%E6%A6%82%E8%A6%81-overview%EF%BC%882023%EF%BC%89)に参加したKuroと申します。全18問中10問を解き、1550点、順位としては3位をいただきました。運営いただいた[pinja](https://twitter.com/pinja_xyz)の皆様ありがとうございました。
　以下、本記事では私が解いた10問に関するWriteupを記述します。

![Screen Shot 2023-11-12 at 0.37.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/fd5bfbfa-c92b-a7e7-ecbc-9cdc2077036e.png)

# 結果一覧


|Challenge|Category  |Points  |State |
|----|----|----|----|
|Amusement  |GEO  |50  |solved|
|mural  |GEO  |200  |solved|
|Esta rico!  |GEO  |200  |solved|
|Fireworks  |GEO  |300  |-|
|neko  |WHOIS  |50  |solved|
|COMPANY  |WHOIS  |150  |solved|
|Aircraft  |MISC  |100  |solved|
|REVERSE AI  |AI  |100  |-|
|BUS  |BUS  |200  |solved|
|RIDE A BUS  |BUS  |500  |-|
|cosplayer  |SOCIAL  |200  |-|
|pet  |SOCIAL  |200  |solved|
|Bitcoin  |CRYPTO  |200  |-|
|AYTOKYO  |HUMINT  |200  |solved|
|join  |HUMINT  |200  |solved|
|FIND SPY |SIGINT  |400  |-|
|SIGNAL  |SIGINT  |600  |-|
|Otokichi  |HISTORY  |500  |-|

![Screen Shot 2023-11-12 at 1.04.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/800e025b-0b34-ccad-727c-9a2636dfdcf6.png)

# Amusement(50pt)
> ここの施設の名前は？
> What is the name of this facility?
![5_GEO_Amusement.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/55921291-e906-392f-2a67-1f5123e6831c.jpeg)

画像を拡大すると日本語が書かれており、ここが日本であることがわかります。そこで「山の上 観覧車」でGoogle検索すると、一発目に対象がヒット。観覧車の形状から目的の施設であると判断し正解。

 https://www.sagamiko-resort.jp/attractions/oyama.html

 # mural(200pt)
 >この壁画が描かれた建物の位置座標を答えてください。
フラグ形式： 7桁のplus code
(画像出典: https://iranprimer.usip.org/blog/2022/feb/09/irans-revolution-43-politics)
![10_GEO_mural.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/d4c2b722-5be6-575f-bdcf-130ac8cad6b6.png)

まず、Google画像検索に突っ込んでみます。大量のニュース記事がヒットし、この壁画がテヘランに存在することがわかりました。

![Screen Shot 2023-11-12 at 1.22.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/e4eed753-bcc0-adb3-67ec-98053490d5c5.png)

 
そこで「mural in Tehran」を複数言語、複数ツールで検索しますが、この方針は結果的にうまく行かずstackしました。
一歩戻って、大量にあるGoogle画像検索結果の中から、画像に撮影場所が書いてある記事が存在しないか虱潰しに見ていく方針に切り替えました。すると、以下の５個目の記事に「Enghelab Square in central Tehran on September 10, 2023」 という記載を発見しました。

#### memo
- 画角が異なる画像のバリエーションが出ている状態なので、画像内から文字などを取り出すなどの技を思いつけると安定性が増しそう。

https://www.israelhayom.com/2023/10/03/iranian-leader-warns-arab-states-against-gambling-on-normalization/

そこで、Googlemapで「Enghelab Square」を検索。

https://www.google.com/maps/place/Tehran+Province,+Tehran,+Enghelab+Sq,+%E3%82%A4%E3%83%A9%E3%83%B3/@35.7010286,51.3915237,3a,75y,90t/data=!3m8!1e5!3m6!1sAF1QipOM0tjvHgLjzDpJH_7BG8tXMXpdl_JARegeuUmL!2e10!3e10!6shttps:%2F%2Flh5.googleusercontent.com%2Fp%2FAF1QipOM0tjvHgLjzDpJH_7BG8tXMXpdl_JARegeuUmL%3Dw203-h451-k-no!7i1080!8i2400!4m7!3m6!1s0x3f8e011d1b6ca4ed:0x84c14853fc8780ee!8m2!3d35.7010286!4d51.3915237!10e5!16s%2Fm%2F0fqr8rr?entry=ttu

画像をスクロールしていくと、問題文の画像と同じものが見つかりました。

![Screen Shot 2023-11-12 at 1.31.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/acd7bbfd-46bc-a63c-94a9-bbf0f991073a.png)

この近辺に答えがあることはわかったので、googlemapの360°ビューをぐりぐり回転させ、それらしい壁画が存在しないか探しました。すると、四差路の一つに人の顔と思しき壁画を発見。そちらに移動してみます。

![Screen Shot 2023-11-12 at 1.36.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/604a1d82-9b38-392d-59f7-3e867c754805.png)

目的の壁画を発見。建物のpluscodeをsubmitし正解。

![Screen Shot 2023-11-12 at 1.38.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/e73cff3a-9c7b-cfc4-0057-7289df7e66ee.png)

# Esta rico!(200pt)
>このお店の電話番号は？
What is the phone number of this shop?
![14_GEO_LATEN.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/b25967db-7edd-b576-0fef-daa890184d68.jpeg)

画像を拡大して情報量が大きなものが映り込んでいないか探していきます。まずダメ元で、左下の豚肉料理を素材に検索を行いますが、これはうまくいきません。
なにかないかと画面内を探し回っていると、画面中央右に「サルチーニャ(?)」という見慣れないカナ文字列と餃子のような料理が見つかりました。ググると、その料理は「サルテーニャ」というボリビア料理であることがわかりました。

![Screen Shot 2023-11-12 at 1.48.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/88188c5e-0293-5562-3dc0-1999ccc38454.png)

検索結果からサルテーニャを提供しているボリビア料理店は、日本ではそもそも珍しいということが推測されました。そこで「サルテーニャ ボリビア料理」でgooglemapで検索すると日本全国で２件の店がhit。順に電話番号を取得し試して、正解。

# neko(50pt)
> neko.vn の登録日付はいつ？
フラグ形式： yyyy-mm-dd
hint: ほかのサイトで探してみて。

terminalで $whois neko.vn を実行。createdが 1994-04-14 と出たのでそれを入力するも不正解。仕方がないので、chatgpt先生に泣きついて、探す候補になりうるサイトを教えてもらいました。いくつか候補をあげてくれた中に含まれていた、以下のサイトで検索することで正解の日付を特定することができました。

https://whois.net.vn/

# COMPANY(150pt)
> neko.vn のMSTは？
What is the MST for neko.vn?

chatgpt先生がいい感じの挙動をしたので、調子に乗って下記のプロンプトでchatgpt先生に問題を解かせてみました。すると、答えのフラグをそのまま返してきました。入力したらそれが正解だったため、驚いてドリンクを吹き出しました。

![Screen Shot 2023-11-12 at 2.10.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/a6ec5772-bc9c-825b-adbc-cd14f277f7bf.png)

# Aircraft(100pt)
> この機体のモデル名は？
フラグ形式： [A-Z]+-\d+[A-Z]+
https://1drv.ms/v/s!AmBkM-TKj1UtisAkIbSDFG8xxXWAOg?e=tJ9WkV

とりあえず、動画を拡大して機体部分を画像検索しました。記事がたくさん引っかかりますが、サムネから類似性が高いと思われる下記のリンクを特定。正解。

https://blog.goo.ne.jp/tamanets/e/b81c2f5e0214b03d3f6f12fb77a5118c

# Bus(200pt)
> このバスの座標を求めよ。
フラグ形式： Nxx.xxx_Exxx.xxx
![1_BUS_BUS.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/08d5ffe6-ee51-ed54-8e86-53beae67ec59.jpeg)

バス部分を拡大して画像検索をかけることで、このバスは日光市営バス足尾地域の東武日光駅前～足尾区間を走行しているものだとわかります。

https://kitabus.net/kokyo-bus/80-ashio.html

さらに、写真内のカーナビの画像から、撮影者はおそらく国道122号線上にいるだろうということもわかりました。

![Screen Shot 2023-11-12 at 2.28.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/2ea1bffc-07b4-00df-a483-e3c497f63069.png)

日光側からストリートビューで国道122を散歩して写真と一致する地形を見つければ良いという方針を立てました。散歩をしていると、下記画像のような地点を発見。電柱、背後の柵の形状、未知の曲がり具合など看板手前にバスがいたのだろうと推定し、周囲をブルートフォース。正解。

![Screen Shot 2023-11-12 at 2.33.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/6eb4cc94-14fe-0a73-5aa0-597d3f7ef377.png)

#### memo
- この解き方でも構わないが、もう少し画像から情報を拾うと楽に解けたかも。
- たとえば、影のでき方から方角を特定する。方角を特定した上で道の曲がり具合から調べるべき場所にピンを立てて当たりをつける、その上で各ピンの場所を見ていく手法のほうが探索効率は良い。

# pet(200pt)
> この場所の開園式を撮影したカメラマンは、今は引退してゴルフを楽しむなど余生を謳歌している。
そんな彼を長年支えてきたペットの名前は？
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?
![11_SOCIAL_pet.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/1277caf6-e7f4-1856-2312-35a940bb9a24.jpeg)

初手、Google画像検索をかけるとこの建物は VancouverにあるPortal Park であることがわかります。次に、「Vancouver Portal Park opening」で検索し、引っかかってくる記事のサムネイルを眺めることで、開園式を取り扱った記事を見つけることを試みました。すると下記の記事にテープカットの写真が含まれている事がわかりました。

https://searcharchives.vancouver.ca/unidentified-man-speaking-at-portal-park-opening-4

記事をよく観察すると、記事の右側に写真を取った人物の名前が記載されていました。「人物名 photographer」などで検索すると実在するカメラマンであることが確認できました。facebookでその人物を検索。投稿を遡っていくとペットを紹介している投稿を発見。そこに記された名前を入力し、正解。

# [HUMINT]AVTOKYO(200pt)
> あの狂信的なアイスキャンディ団から熱心な勧誘を受けている人が複数名、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.

HUMINT問題です。１回目の休憩時間、充電のため外出する際に周囲を観察しつつ移動していたところ、それらしい人を発見できました。声をかけてキーワードを取得。正解。

# [HUMINT]join(200pt)
> もし全員見つけた場合は、全員からもらった単語を組み合わせると、特定の位置を発見することができる。
その位置にあるもののプラスコードの７文字を求めよ。
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?

1人目の特徴がわかりやすかったことから残りもすぐ見つかるだろうと考え、1,2回目の休憩時間を探索+(1つも解けなかったSIGINT)に費やすが発見できない。
最後の休憩時間で再度探索を開始。残りの２名を見つけることができた。ターゲットと雑談。対象者は３名であることを教えてもらい探索終了。取得した単語は、「against」「played」「handed」の３つ。
情報量がいずれも少ないこれらの単語の組み合わせから、地球上の特定の位置を見つけることは原理的に難しい。なにか裏があるのだろうと推測しました。手がかりを求めて調査していると、下記のようなサービスが見つかりました。このサービスは「what3word」といって、地球上の任意の場所を、３つの単語の組み合わせでポイントするというサービスのようでした。

https://what3words.com/ja/about

「what3word」に関して調査を進めると、下記の２つの性質が明らかになりました。(下図)
- 性質1: ３つの単語を入れると地球上の任意の場所を高解像度でポイントできること。
- 性質2: 単語の順序を入れ替えると、ポイントする場所も変わること。

![Screen Shot 2023-11-12 at 3.16.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/fd88f060-0f5c-10a0-d9a8-4e7fb59c38f3.png)
![Screen Shot 2023-11-12 at 3.24.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/88b5567b-3aba-9d64-915d-aeb4750ee602.png)

この時点で、答えは地球上の下記の６地点に絞られました。
> against.handed.played
against.played.handed
handed.played.against
handed.against.played
played.against.handed
played.handed.against

出力はpluscodeなので、あとは上記形式をpluscodeに変換するだけです。変換は下記のサイトでまず緯度経度に変換し、あとは上からgooglemapに入力。すべてpluscodeに変換し網羅的に施行することで、正解。

https://what3words.com/ja/products/batch-converter

# あとがき
　記事に目を通していただき、ありがとうございました。Kuroと申します。出身は理学部生物。仕事では生命科学とAIの融合領域における事業開発をしています。

　CTF歴としては昨年友人に誘われてAVTokyo2022に参加したのが初めてで、その時はチームで9位という成績でした。昨年の大会が楽しかったこと、今年は昨年よりも良い成績を取りたいという気持ちから、昨年のwriteupに目を通し、必要なツールを頭に入れて今回のCTFに望みました。結果として望外な成績を残すことができ、嬉しく思っています。今回解けなかったいくつかの問題に関しては感想戦で反省点をあぶり出し、今後に活かしていければと考えています。

# 追記: 解けなかった問題に関する備忘録
## cosplayer 
>下記のURLに投稿された、恐竜に扮したCCさくらのコスプレイヤーの方は昔、
人間のCCさくらのコスプレイヤーの方と2ショットを撮っています。
人間のCCさくらのコスプレをしていた方のX(Twitter)ユーザ名を答えてください。
https://x.com/MikeCovers/status/979804843543056384?s=20
- FBでそれっぽいアカウントは発見。次に繋げられなかった。
- 技術要素が３つ存在。①恐竜コスプレイヤーのfbアカウント特定、②人間コスプレイヤーのfbアカウント特定、③人間コスプレイヤーのXアカウント特定。
- ②→③の箇所に複数方法があるので、それをきちんと思いついて使い分ける事が重要だった。今回は、アイコン使い回しだったので画像検索を試すことで解けるようだった。
- 一般に、異なるSNSを紐付ける情報として、アカウント名の使い回し/アイコン使い回し/(+投稿の共通性？) があり、それぞれに着目した手順を系統的に試せると良い。
## bitcoin 
> 2021年11月に結婚したIlyaが所有していたとみられるBitcoinのアドレスは？
- Ilyaが何者で何をしたのかはわかった。アドレスが記載されたロンダリング事件の記事/報告書が存在しないか探索するも時間切れ。
- 「人物名 bitcoin "address"」で検索すると色々出てくる。そのまま時間を投下して、そのまま愚直に探せば良かったようだ。たとえば、下記のようなページのなかに答えが書いてある。

https://u.today/5th-biggest-mysterious-bitcoin-wallet-owner-is-somebody-totally-unexpected-report

- また、bitcoinに関して言うとbitcoin ritchristというものがあり、そちらを参照する手もあったようだ。

https://bitinfocharts.com/top-100-richest-bitcoin-addresses.html

## Fireworks
> 8月に花火大会に行ってきました。
私が立っていた位置座標を答えてください。
(動画が添付されている)
- ８月に開催されていた花火大会は無数にあったため諦めた。
- 月の形状に着目するのが良かったらしい。月の左側が欠けている。2023年の月齢カレンダーから8/26,27あたりと大きく絞り込むことができる。

https://www.arachne.jp/onlinecalendar/mangetsu/2023/8/

- あとは花火の形状をgooglelends。植生などから花火大会を絞り込むことはできる。
- 次に、場所を絞り込む。画面下にこのような看板があることから水源が近いと推定でき、更に場所は絞り込める。 

![Screen Shot 2023-11-11 at 15.19.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/5fc7bea7-4d75-4669-2ad6-39a203263e8a.png)

## REVERSE AI
> この生成AI画像は、ある文学作品の冒頭部分を画像イメージにしたものである。この文学作品のタイトルを答えよ。

![15_AI_REVERSE_AI.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/ba585145-cffa-ec0e-b0fb-2d5b00b8fe70.png)

- 何も思いつかなかったので、chatgptに、"この画像をDALL-3で生成するために必要なプロンプトを書いてください"とお願いして、プロンプトを書いてもらう。そのプロンプトと類似性の高い小説を教えてもらうとする。が、どれも外れで無為に時間が溶け、結局解けなかった。
- 単に、画像に含まれる要素を「二人の猟師　３匹の犬　文学作品」などと特徴量抽出して検索すれば解けたようだ。

## RIDE A BUS
> 私は日本に初めて来た、電車は高い、東京からバスで行く。
サイトで見たバス停の名前が間違っていた。
このトンネルをくぐると歴史的な日本だと紹介された。
たくさん歩いた。
このトンネルの座標は？
フラグ形式： Nxx.xxx_Exxx.xxx
> It'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

![7_BUS_RIDE_A_BUS.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3619406/d623ba7f-8145-1192-adec-ff93caa60342.jpeg)

- 初手英語で生成AI(gpt3.5)に問題"文"を投げると、３箇所(e.g. 中山道。熊野古道)くらいに候補を絞り込むことができる、らしい。
- あとは、四角いトンネルは高架下であること。東京駅のバス時刻表などを参照する。海外の方が参照する情報ソースに当たるなど、していくと解けるようだ(?)

## FIND SPY[SIGINT]
> 私はある闇取引でスパイを追っている。そのスパイは、AVTokyoというイベントに参加しているようだ。スパイのアカウントを発見し、発信している情報をつかめ。

- Telegramの'People Nearby' 機能を使って、近くにいる人間を探すのはSIGINTの定石的手段とのこと。

https://lifehacker.com/dont-use-telegrams-new-people-nearby-feature-1846017886

## SIGNAL [SIGINT]
> 我々は不審なデバイスを見つけた。デバイスを発見して停止コードを書き込むことで、そのデバイスの不正な動作を一定期間止めることができる。デバイスの動作を止めよ。

- LightBlue などの bluetooth 解析ツールをインストールして、取り組む問題だったようだ。

https://punchthrough.com/lightblue-features/

## Otokichi
> 山本音吉の2番目の妻との間に生まれた長男が息を引き取ったとされる場所に、現在はとある建物が建っている。
その建物の名前を答えよ。

- 息子の名前はJohn William Ottoson(和名:山本乙吉)で、1926年8月に台湾で亡くなったらしいことはわかった。
- 日本語の検索エンジンだと情報が出てこないので、台湾でメジャーな検索エンジンでいくつか検索してみるも何も分からずあきらめ。

https://hk.yahoo.com/