【CTF】WaniCTF 2024：Writeup

# 概要

2024/6/21(Fri) 21:00 ~ 2024/6/23(Sun) 21:00に開催されたWaniCTF 2024のWriteupです。
書ける範囲で書きます。

https://wanictf.org/

成績は618pt470位で終了しました。

![スクリーンショット 2024-06-23 210135.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/64b7d17b-c0d0-3b8f-8b65-7ae15bba00cd.png)

# Forensics 

## tiny_usb

### 問題

> USBが狭い

### 解答

`iso`ファイルをダウンロードできました。

`string`コマンドで文字列を確認すると`FLAG.PNG`やPNGのイメージ終了チャンクである`IEND`が見られるので中にPNGファイルが隠されていると推測できます。

```
$ strings chal_tiny_usb.iso                                  

(省略)

FLAG.PNG;1
IHDR
        pHYs
tEXtSoftware
Celsys Studio Tool
dIDATx
OL\G
{0jsj.

(省略)

,,oT
 -y-
IEND
```

ファイルをバイナリエディタで開きます。
PNGのマジックナンバー`89 50 4E 47`を検索して、`IEND`チャンクまでを別ファイルで保存するとPNGファイルを抽出できました。

![search.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/59c9c684-ac8b-bf9a-1dde-0c2b17fa73c4.png)

![chal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/482b98c3-e6ea-2f6c-2b56-ec0e439ece03.png)

## Surveillance_of_sus

### 問題

> 悪意ある人物が操作しているのか、あるPCが不審な動きをしています。
そのPCから何かのキャッシュファイルを取り出すことに成功したらしいので、調べてみてください！

### 解答

`Cache_chal.bin`というファイルをダウンロード出来ました。

バイナリエディタで開くと`RDP8bmp`と表示されました。

![rdp6bmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/f7022ffa-d256-ab6a-4981-b4a8270ed00b.png)

下記サイトを参考に解析を進めました。

https://jpn.nec.com/cybersecurity/blog/231006/index.html

`bmc-tools`でキャッシュファイルをパースします。

https://github.com/ANSSI-FR/bmc-tools

```
$ python bmc-tools.py -s ../Cache_chal.bin -d outpu -b
```

`collage`ファイルで全体像を確認できました。

![スクリーンショット 2024-06-21 223937.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/39d95ee0-2264-eca1-01ee-d9dccbebc5eb.png)

FLAGの文字列が見にくいので`RdpCacheStitcher`を使用してさらに解析します。

https://github.com/BSI-Bund/RdpCacheStitcher

フラグの文字列を復元できました。

![スクリーンショット 2024-06-21 232304.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/329e5b61-9356-4ebb-0a5a-c94a2898e8b5.png)

`FLAG{RDP_is_useful_yipeee}`

## codebreaker

### 問題

> I, the codebreaker, have broken the QR code!

### 解答

バツ印のついたQRコードをダウンロード出来ました。

![chal_codebreaker.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/ac8ac6b4-6905-cef2-df44-e0c2da517706.png)

下記サイトを参考にピクセルを白で塗り替えていきます。

http://jqupc.net/index/6-3.html

できる限りノイズを除去できました。

![スクリーンショット 2024-06-22 141831.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/2b94adcf-62a0-b9bc-b09a-e729f553b46b.png)

このQRコードを`クルクル`などのアプリで読み込みます。

https://www.denso-wave.com/ja/system/qr/product/reader.html

フラグが表示されました。

![MicrosoftTeams-image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/55615428-1525-475c-7648-6d254d8f3ac0.png)

# Pwnable 

## nc

### 問題

> pwn問題はnc(net cat)コマンドを使って問題サーバに接続することがよくあります。ncの使い方を覚えておきましょう
下記コマンドをshellで実行すると問題サーバに接続することが出来ます。接続先で問題を解き、フラグを獲得してください

### 解答

ソースコードをダウンロードします。
Netcatで接続すると解答を求められます。
`main.c`を確認すると、`answer`が`10`の場合に`win()`が実行され、フラグが表示されるようになっています。

```
void win(){
    system("cat FLAG");
}
int main(){
    init();
    int answer;
    printf("15+1=0x");
    scanf("%d", &answer);
    if(answer == 10){
        win();
    }
    else{
        puts("incorecct:(");
    }
    return 0;
}
```

`10`を入力してフラグを入手できました。

```
$ nc chal-lz56g6.wanictf.org 9003
15+1=0x10
FLAG{th3_b3ginning_0f_th3_r0ad_to_th3_pwn_p1ay3r}
```

# Web

## Bad_Worker

### 問題

> オフラインで動くウェブアプリをつくりました。

https://web-bad-worker-lz56g6.wanictf.org

### 解答

サイトへアクセスした際に読み込まれる`/service-worker-assets.js`を確認すると`FLAG.txt`を見つけました。

![server assetes.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/11c8eb95-59d6-edbd-8382-d84166827a8c.png)

`/FLAG.txt`へリクエストを送信するとフラグが返ってきました。

![flag.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/114d2a90-dd99-8964-7e56-f886c3121d3b.png)

`FLAG{pr0gr3ssiv3_w3b_4pp_1s_us3fu1}`