ASUSN CTF2 Writeup

# ASUSN CTF2 Writeup
2024.12.28 9:00 ~ 2024.12.30 9:00


## Web
### SQL寿司
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2959926/470fcfa9-cda8-808f-a0ee-a4533b969808.png)
idの場合はエラーが返ってくるが、IDの場合は値が返された。
`asusn{3b1_1kur4_m46ur0_h4m4ch1}`

### インターネット探検隊
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2959926/1a4cc5bd-7817-6da6-7ec8-a49908088988.png)
問題文で与えられたページにIE9の脆弱性について書かれていた。そのページにはFLAGは見当たらない。
User-Agentの部分をIE9になるように書き換えてリクエストを送ると返されるページの内容が変わった。script部分を動かすとflagになりそう。しかしChrome等の最新のブラウザではVBscriptは対応してない。
ChatGPTでscript部分をpythonで記述してもらい復号結果を得るとフラグになった。
`asusn{Ot0nG4_1uNiw4_Chr0M1Um}`

### JQ寿司
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2959926/30dc7c5b-fe83-2019-f591-c4812e4e7806.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2959926/a98803dd-0c66-0c4c-be14-fc2a8a08387a.png)
to_entriesを使うとkeyとvalueを追加できる。これにより、flagという文字を使わずにflagの値を指定できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2959926/fd778fba-ae1b-500c-9e39-f51ba2638f78.png)
`asusn{74m460_h4mbur6_c4l1f0rn14r0ll}`


## LLM
### プロンプトインコ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2959926/a05cd2ea-1079-4e70-1821-617d615fcfb8.png)
返ってきた返答　`ａ ｓ ｕ ｓ ｎ ｛ Ｒ Ｏ Ｌ Ｅ Ｘ ８ ３ １ ８ ３ １ ８ ３ １ ｝`
空白区切りに加えて全角で出力されているようなので空白を消したうえで半角に戻し提出したところ成功
`asusn{ROLEX831831831}`

### ガバガバずんだもん
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2959926/a075d7ea-0488-add7-b91a-6a8e8329baec.png)
自分の秘密を２つ共有するとFLAGを教えてくれる。秘密はなんでもよいみたい。２個教えるとフラグを教えてくれる。
`asusn{Zundamon-Injection-Attack!!!}`


## Misc
### 最悪エディター1
sshで接続するとemacsでファイルが開かれた状態のためファイルを閉じるとFLAGが表示される。
emacsの閉じ方を調べるとCtrl+x Ctrl+cで保存して閉じれる。
`asusn{Em4c5_n0_k070_D4r364_Suk1n4n?}`

### フラグ絵文字
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2959926/9bbf9298-8b97-8b44-92d5-2b25828c3106.png)
Discordの絵文字を横に引き伸ばし「青い空を見上げればいつもそこに白い猫」というツールを用いてエッジ抽出した結果が上の画像である。{の後ろがかさなり読みづらい。}を参考にlだとわかった。
`asusn{looks_amazing_to_me}`

### 最悪エディター2
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2959926/cf3c9d8a-3c07-fcaf-82c1-3a337145d8ec.png)
Ctrl+x bで*scratch*バッファを開き`(async-shell-command "bash")`を入力後Ctrl+jで評価する。するとシェルのウィンドウができるのでCtrl+x oで操作ウィンドウをシェルのウィンドウに切り替える。その後、/にreadflagが保存されているので移動し/readflagで実行した。
`asusn{Em4c5_1S_541kO_L1Sp_In73rpr373R!}`


## Reversing
### フラッシュ機械語リターンズ
何度か問題の出題を見ていると、ステージごとの出題の形式が基本的に同じであることが分かった。例を挙げるとステージ1では、値をインクリメントorデクリメントをする出題される。そのため、無理やりではあるが以下のようなプログラムを用意して解いていった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2959926/c31a29f9-0db3-02c5-b111-a86dc39346b1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2959926/e961ab1a-dd10-aefe-e57f-11a25e59243d.png)
`asusn{48B8343D686F6E6F5F6E48B96F5F676F626C6574}`

### ターミナルトーク
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2959926/78ebbc51-f2ed-f73e-9eec-5c58fa67cafa.png)
上のviewからToggle Developer Toolsを押すとWebの開発者ツールが表示される。開発者ツールのSource/script/script.jsを見るとコマンドの処理が書かれておりその中にmyCommandという関数が用意されている。さらにコードを見ていくと、入力文字列からどの関数を呼び出すか定義してある部分があり。その中にコメントで秘密のコマンドと書かれたmyCommandを呼び出す文字列が書かれていた。書かれていた文字列で秘密のコマンドを実行するとFLAGゲット。
`asusn{El3cTr0n_M0_S41k0Ud4Z3~!!}`

### whitespace
whitespaceで書かれたコードが添付ファイルとして渡される。https://naokikp.github.io/wsi/whitespace.html でParseOnlyにすると処理が読めるようになる。pushで使用する文字を１文字ずつ用意しているようなので値をすべて文字に直してみると、flagの文字が読み取れた。
`asusn{U_R_wH1Te_h4cK3r}`


## Crypto
### ホワイトボード公開鍵
GoogleのOCRを使った後、問題文で与えられているSSH公開鍵のバリデーションサイトをみながら修正する。修正した結果が↓。

```
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC+NFFxCmZguBBuUI5kRk6RwA7xHyCw9BOh9BuMtqnR+YCt05bV3Ik+ZZwuCHkdJcAy/P02Xnt+lUGdnaUh6ggodK8KS1s0Hl8bbOVTHyGp8kb3KaT0G2xcWyYwcpP8EutunCJxqJq0/NidwHzHqHvoGXN7+SMwrGhCeoYt/mkgCo1lVzj8RDPAYCw4zAWLLmPzccRNtfH7mikWzGgTDtG0VnNNFNY01uQfaNR5HTnqpkAKgZMCk9KC1+I9jxDqAMmYkOs3lD9qsoBKAS0VXUNWROyRNPeHKPZEX2lMjdsBRL3jrHY9VxeoajRCECmtnlTx2YU3g4sqWJjO2J77NkwTRgrROmka4SQRO3Cxj1oqwygSkXwHvlEiwc/heY2n0CGsrU1ouEbw6nhmk87r/tq3Ax6hzSvfysw8YxVBCaCLFci5UIZxbVAGbyG8J+0ISiV4qegHpNc5RBRlXtdebQTJH9PsW7jtwH/LNj2p3BU4H/BkCXVjmgjbJZJsLBY2JZ8= riiko.memori@MacBook-Pro.local
```
ChatGPTを用いて公開鍵からnを求めるコードを書いてもらいnを求めた。
```
asusn{4316454823958979350821879958827386839209767398843008592980093818578532149055328873830734853879422071633972479399989611179809270802708098116113137473978019612249638612921910952776041646463955615185586713779039209495662665862044526350328416612970179772357407578283170391892163361161423242463839216486191726266001450862332524947759885308258806547228785930127804815661783542809434495926285323439467440435207576229586185872852627321325574880563571032512983250482666394751605461950372375895199491004704979596363807044768218536468399870837525579785484146753426703829061365766377589171054815007397491034005363180572662042084392122278701708820644976290785859644490523972785517754264887759471933732811976805372887048049858703560483212550548890987592144218010325047045334623540738602656358184048259983003558486733118064956146559661690572865691917602416317480386965467762801747450553079575406023840758796453737250270995531598295488406943}
```