ナゾトキCTF～入社試験からの脱出～ WriteUp

## はじめに

本記事は先日開催されたナゾトキCTF～入社試験からの脱出～に関するWriteupです。
Hintがあったおかげで無事に全問クリアできましたので私の解法例を記載します。
間違ってるところがあればご指摘いただけると嬉しいです。

## ナゾトキCTF～入社試験からの脱出～ とは

https://ctf.nazotoki.tech/

- 謎解き要素をミックスした初心者向けCTFイベント

- イベント期間: 2022/7/17 (日) 13:00 JST - 2022/7/18 (祝) 13:00 JST

- 形式: Online / Jeopardy??

- ルール概要
  - フラグはカタカナ4文字
  - フラグを入手してポイントをゲット
  - 各問Hintが用意されていてポイントを消費することでHintを開放できる

- なんと[スポンサー様](https://sys-guard.com/)から賞品がでます！

---

## 解法例

### おひつじ座

問題: あなたが目指しているものの間を読め

- プロローグページより「あなた」＝「高橋 ピヨ彦」が「目指しているもの」は「セキュリティ業界の星」
- 「星」＝「★」の間を読む
- プロローグページのアイちゃんのメッセージに「★」が2つある
- 「★」の間を縦に読むと「ハンドル」
  ![aries-ans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/1ab44cb4-5f60-8501-4d8f-5847a8a46811.png)

いきなり超難問でHintを見てもしばらくわからなかったです😂

### おうし座

問題: 2021年に行われた、コンピューターウイルス「emotet」のテイクダウン作戦の名前を日本語で言うと？「○○○○ムシ作戦」

- Emotetは2021/01/27に「Operation Ladybird」という作戦でテイクダウンに成功した

- Ladybirdは日本語で「テントウ」ムシ

:::note warn
 **Emotetは活動再開しているのでご注意ください！！**
:::

### ふたご座

問題: Webサイトにアクセスしフラグを探せ

- ブラウザ上でパスワードを入力するサイトが提供されている
  ![gemini-inputPW.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/c2ae4852-a9fc-1114-8945-284e31ccbc20.png)

- パスワードは`dioskouroi`らしいので入力してリクエストを覗いてみると`dummyPassword`と`realPassword`というクエリを送っているのがわかる
  ![gemini-request.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/4e7d3a18-87a3-1b8c-c091-9ef0846439eb.png)

- `realPassword`の値を`dioskouroi`にしてリクエストを送ると「ナイーブ」というフラグが表示される
  ![gemini-flag.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/341c3ae6-11ce-da81-7230-20e9f0e18f7c.png)

ちなみにdioskouroiはギリシャ神話の双子の神のことのようです ♊

### かに座

問題: 仲間はずれを探せ (cancer.zip提供)

- 提供されているcancer.zipを7zipで覗くと13個のファイルがあり、1つだけ妙に圧縮率の高いファイル"f0525aafa095ed2665d03681537a70ea"があったので開いてみるとファイルの最後に「イイワケ」と書かれている

- 別解
  - 解凍したファイルをfileコマンドで確認しても仲間はずれは見つかりました。ちなみに残り12個はpcapng capture fileということなのでWireSharkなどで見れるパケットキャプチャファイルのようです。

    ``` bash
    $ file *
    0961db32a59b8a83c1996498f9d1d80e: pcapng capture file - version 1.0
    397cbf6db9d7ae6906ae420aedc5346c: pcapng capture file - version 1.0
    44ca0844398b2d010d8cd4a31ddb023d: pcapng capture file - version 1.0
    4de447a391e32baeb5a52c55aa14467b: pcapng capture file - version 1.0
    550eadb88a230018bf043d1b6ad15863: pcapng capture file - version 1.0
    635cbc8a5dc1a528c3b5cb9eecdc1086: pcapng capture file - version 1.0
    7463543d784aa59ca86359a50ef58c8e: pcapng capture file - version 1.0
    766cc4dd4d5005652e8514e3513683f8: pcapng capture file - version 1.0
    7c70e2cb2b4a13c4590f6b15c30385fd: pcapng capture file - version 1.0
    a0678bcea04dbd6852c219062ab2bb3c: pcapng capture file - version 1.0
    b9c94e8a87e3647c5a0fa4ff358ecc65: pcapng capture file - version 1.0
    f0525aafa095ed2665d03681537a70ea: UTF-8 Unicode text
    f8a5c386478fa64f118056b82acc31d2: pcapng capture file - version 1.0
    ```

### しし座

問題: ルールを守れ

- 画像が提供されている
  ![leo-question.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/d2082b17-adb9-0515-3f9e-595911873b97.png)

- 「ルール」＝ルールページの最後にある「大切なルール」
  ![leo-rule.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/0ca02bbf-8eaf-8f91-ca75-675e1f179422.png)

- ルール通りに「モエルゴミ」と「ペットボトル」は捨てていくと「チーター」がでてきた
  ![leo-ans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/163059ae-5b78-9081-3ace-6545ffa2581c.png)

ルールのページに変なルールが書かれてるなぁ～ネタかなぁ～と思ったらここで使うルールでしたｗ

### おとめ座

問題: Webアプリケーションのセキュリティ分野の研究・ガイドラインの作成・脆弱性診断ツールの開発・イベント開催などの活動をしているオープンソースソフトウェアコミュニティの名称の読み方をカタカナ4文字で答えよ。

- OWASPなので「オワスプ」

### てんびん座

問題: Webサイトにアクセスしフラグを探せ

- サイトのメッセージを見るとstardustChromeという特殊なブラウザを使う(使っていると見せかける)必要がある
  ![libra-question.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/92aa9ae6-4798-0130-f8c8-c528ef5c7c1d.png)

- ブラウザ情報はUser-Agentヘッダで送信されるのでUser-Agentを偽装する

- ChromeでUser-Agentを書き換える設定
  - 設定を開く
    ![libra-User-Agent.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/17141582-ebd5-fa75-b05e-f7c0a0181b8d.png)

  - Use browser defaultのチェックをはずしてCustomの下にstardustChromeと設定する
    ![libra-User-Agent-Config.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/be5d4a08-ae0c-7c60-dcb7-df5396321261.png)

- 再読み込みをクリックするとフラグ「クローン」が表示される

### さそり座

問題: 世界一かわいいうちの犬を紹介します (scorpio.jpgが提供される)

- わんこの画像が提供されている
  ![scorpio-question.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/f3faf835-083e-63cf-283d-19900163d8d6.png)

- かわいい

- この子のきらきらおめめを拡大すると「カクダイ」という文字がうつっている

### いて座

問題: 穴埋め

- 穴埋めの画像が提供されている
  ![sagi-question.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/42ef567b-88cd-4722-df56-86b99841ac09.png)

- 東西南北。左側に英語読みが入り右側に音読みが入るので「イースト」

もはやノーヒントでは解けませんでした😵‍💫

### やぎ座

問題: ある数 x を数 b のべき乗bᵖとして表した場合のpのこと。logとも呼ばれるこの数を日本語で何というか？カタカナ4文字で答えよ。

- 対数なので「タイスウ」

### みずがめ座

問題: Webサイトにアクセスしフラグを探せ

- 「社員ナンバー」と「パスワード」を入力して社員情報を閲覧するサイトが提供されている
  ![aqu-question.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/66564d82-516d-cce3-a9f2-4b0a883856b1.png)

- プロローグページにアイちゃんの社員ナンバーが99と書かれているのでそれをつかう

- パスワードはきっとSQL文で照合されるので入力文字列「`1' or '1'='1`」でSQLインジェクションを試みる
  
- アイちゃんのプロフィールと主人公のプロフィールが表示され、フラグは主人公の苗字であることが書かれている。苗字は「タカハシ」

### うお座

問題: みずがめ座からてんびん座に向かうとき、ひみつの鍵が手に入るだろう。水の中に浮かぶ真実を見定めよ。 (password.encとencrypt-pisces-new.zip(パスワード付きZIPファイル)が提供される)

- みずがめ座(の問題で提供されたWebサイト)からてんびん座(の問題で提供されたWebサイト)へ向かうとき、ひみつの鍵が手に入る。ということで、みずがめ座のWebサイトからてんびん座のWebサイトへ訪問したという状況を作る

  - refererヘッダにはどこのサイトから訪れたかの情報が格納されているので、そこにみずがめ座の問題Webサイトを入れておく必要がある

  - ChromeのReferer Controlという拡張機能を使う。設定はこんな感じ。
    ![pis-referer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/2cfe85e1-f711-2af0-296c-678e7caac745.png)

  - 上記設定後にてんびん座のWebサイトを訪れるとPrivate keyのデータが表示される

  ※ てんびん座の問題の時に設定したUser-Agentの設定は元に戻しておく(Use browser defaultにチェックを入れる)。そうしないとてんびん座の答えのページが表示されちゃいます。

- 表示されたPrivate keyをpassword.encと同じディレクトリに例えばprivate.pemというファイル名で保存し、private.pemを使ってpassword.encを復号する

  ``` bash
  $ openssl rsautl -decrypt -inkey private.pem -in password.enc
  The password for the zip is "fomalhaut".
  ```

- encrypt-pisces-new.zipをパスワード`fomalhaut`で解凍すると画像ファイルが見れます
  ![pisces.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/817d6dc1-65c4-d473-7688-a4c8f9a0c89d.jpeg)

- ステレオグラムなので後は頑張って見る…「ケッパク」

  ※ 実際の画像に黒い点を付けてみました。黒い点が重なるように焦点を奥または手前に少しずつずらしてみてください (私は奥に焦点を合わせる派)。そのまましばらくその焦点の距離で目を慣らします。焦点の距離に慣れてきたら焦点の距離は維持したそのままで視線を少し下げてみてください。ふんわり文字が浮かんでくることがあります。

ナゾトキとCTFが融合した感じがして面白かったです (難しかった…)

### へびつかい座

問題: 最終問題に進むためのフラグを導く魔法の解答用紙をご用意しました（謎解きによくあるやつ）

- 解答用紙
  ![ophiuchus-question.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/a42bdaec-d90a-1ed3-ab89-10b8928d4e6b.png)

- 12個のキーワードを入れて1文字目を繋げると良い

- 12個なのでこれまでの12星座の答えを並べると「はてなをいちおくかいたたけ」
  ![ophiuchus-ans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/7a457f6b-4f1d-d53b-6e40-5aab27abc2bb.png)

- 「はてな」はナゾトキｘCTFの左上にある「？」アイコン。
  ![ophiuchus-hatena.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/84d69ece-1576-00b2-1eb2-5da574617ba8.png)

- これを1億回叩くとか無理(1秒に120回程度叩いても1日かかるし怒られるｗ)なので何か方法があるはず。ということで「？」アイコンを押す前と押した後のリクエストの差を眺める。

- するとCookieの`nazotoki`の値が1ずつ増えているもよう。これを1億に書き換える。
  ![ophiuchus-cookie.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/065272d2-e1f2-3468-b39d-f9fd07f40f35.png)

- 「？」を押すと「ポラリス」というフラグが表示される

### 最終問題

問題: パスワードを解け

※ ここに来るまでヒントをたくさん見てきたので最終問題は意地でもノーヒントで解く意気込みで頑張ってみる！💪

- パスワードを入力するサイトが提供されている
  ![last-question.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/76670b30-5d9a-19ed-4ee1-682546f68a44.png)

- パスワードのヒントは愛の星座の中 => アイちゃんの星座の中にヒントがあると解釈する。
  - みずがめ座の問題でアイちゃんのプロフィールが閲覧できる

    7月18日生まれの「かに座」！かに座の問題の中にヒントがある。
    ![last-ai-prof.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/7ee4cce2-58ac-d1e3-ee57-a6c941a2ac16.png)

  - かに座の問題では1個の仲間外れのファイルと12個のパケットキャプチャファイルが提供されていた
    - 中身をのぞくとPNGファイルがFTP-DATAで転送されている
      ![last-pcap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/c2308bed-f2ed-9d50-b546-1f6958acb0ff.png)

    - PNGファイルを抽出して保存する
      ![last-4d-tcpstream.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/b4186fcf-a555-a2cf-84e3-1aefe921dbb8.png)
      ![last-4d-raw.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/e2a21fc4-fd22-d5b8-ddcc-c6e757d941cb.png)

    - 保存したPNGファイルを見ると星座の名前が書かれている。おそらく12個のキャプチャファイルに12個の星座の画像が入っていると思われる。
      ![last-4d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/c0552f39-b313-8d84-d9aa-fe2030363996.png)

- 流れに従い => パケットキャプチャの時刻順に星座を並べるということ？？

  - え、大変(;´･ω･) めんどくさがりなのでここは一旦保留…

- 太陽と月に背いて心の示す方を読め => 上記並べたとてコレがわからん

  - 偶然へびつかい座で使った解答用紙が目に入りしかも記号が書かれている。
    ![ophiuchus-ans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2514738/adb78a68-4ff5-3bec-329e-ca08bd16a1ef.png)

  - 太陽と月に背いて心の示す方を読め => 太陽マークと月マークの列ではなくハートマークに挟まれた列を読め、だと解釈する

    どとーわたすーだすすはぱ…

    きっと文字を並べ替えるのね…「ぱすわーど」が作れそう。

    残る文字は「とーたすーだすは」…「すたーだすと」が作れる。

    💡「ぱすわーど は すたーだすと」！！！🎊

- パスワードに`stardust`を入れるとエヴoOOOOン風のお祝いメッセージで始まるエピローグページが表示された

  - ページの最後には最後のフラグ「オールト」

- おまけ

  めんどくさがり発動で保留にしていたパケットキャプチャ時刻順での並べ替えをクリア後にやってみました。

  ちゃんと「ぱすわーどはすたーだすと」になりました😊

  | キャプチャ時刻順 | 星座名    | 星座順 | ハートマーク列の文字 |
  | ----  | ----      | ----  | ---- |
  |  1    | うお      | 12    | ぱ  |
  |  2    | やぎ      | 10    | す  |
  |  3    | かに      |  4    | わ  |
  |  4    | てんびん  |  7    | ー  |
  |  5    | おひつじ  |  1    | ど  |
  |  6    | みずがめ  | 11    | は  |
  |  7    | おとめ    |  6    | す  |
  |  8    | しし      |  5    | た  |
  |  9    | ふたご    |  3    | ー  |
  | 10    | さそり    |  8    | だ  |
  | 11    | いて      |  9    | す  |
  | 12    | おうし    |  2    | と  |

  へびつかい座の解答にも最終問題の解答にもなるように12星座の答えが設計されているのは本当にすごいです👀

---

## 感想

単身で乗り込みフラグ入手でゲットしたポイントをHint開放で溶かしながら無事クリアできました。ナゾトキも面白くCTF初心者にも解きやすいように絶妙なHintが用意されていたおかげです😭

中でもしし座とうお座の問題が好きですｗ

へびつかい座と最終問題を解くと、それまでの問題のフラグとナゾトキの設計が本当にうまくできていることがわかります。楽しかったです😊

次回開催があればまた是非参加してみたいです！