WaniCTF2023 Writeup

CTFに初参加したから自分用のメモとして解法を書いておく

https://wanictf.org/jp.html

# Crypto
1問目の`EZDORSA_Lv1`だけ解けた

## EZDORSA_Lv1
>はじめまして！RSA暗号の世界へようこそ！
この世界ではRSA暗号と呼ばれる暗号がいたるところで使われておる！
それでは手始めに簡単な計算をしてみよう！
p = 3
q = 5
n = p*q
e = 65535
c ≡ m^e (mod n) ≡ 10 (mod n)
以上を満たす最小のmは何でしょう？
FLAG{THE_ANSWER_IS_?}の？にmの値を入れてください。

RSA暗号の知識は皆無だが、数学でmodの勉強はしたことはあったから解けた
$x = m^e$とおくと、
n=15であることから、
$x = 15k + 10 (k \in \mathbb{Z})$
$=5(3k+2)$とおける
$3k+2 \in \mathbb{Z}$から、$x$は5の倍数
故に$m$は5の倍数
ここで、Wolframを使って$m=5$と$m=10$を代入してみると$m=10$が題意を満たしたので、
`FLAG{THE_ANSWER_IS_10}`

ただ、この問題は$m=-5$とか$m=-20$みたいな$m=-5-15k (k \in \mathbb{Z})$で表される任意の整数$m$が題意を満たし、$m$が自然数であるとは書いてないので最小値は存在しない気もする
$m \in \mathbb{N}$は暗黙の了解なのだろうか


# Forensics
1問目の`Just_mp4`と2問目の`whats_happening`だけ解けた

## Just_mp4
動画自体には特にヒントが見えなかったからとりあえずGoogle Colabを使ってExif情報を表示してみたら

>ExifTool Version Number         : 11.88
File Name                       : chall.mp4
Directory                       : /
File Size                       : 149 kB
File Modification Date/Time     : 2023:05:05 23:22:41+00:00
File Access Date/Time           : 2023:05:05 23:22:41+00:00
File Inode Change Date/Time     : 2023:05:05 23:22:41+00:00
File Permissions                : rw-r--r--
File Type                       : MP4
File Type Extension             : mp4
MIME Type                       : video/mp4
Major Brand                     : MP4 v2 [ISO 14496-14]
Minor Version                   : 0.0.0
Compatible Brands               : mp41, isom
Media Data Size                 : 151250
Media Data Offset               : 71
Movie Header Version            : 0
Create Date                     : 2023:04:26 13:09:50
Modify Date                     : 2023:04:26 13:09:50
Time Scale                      : 30000
Duration                        : 1.00 s
Preferred Rate                  : 1
Preferred Volume                : 100.00%
Preview Time                    : 0 s
Preview Duration                : 0 s
Poster Time                     : 0 s
Selection Time                  : 0 s
Selection Duration              : 0 s
Current Time                    : 0 s
Next Track ID                   : 2
Track Header Version            : 0
Track Create Date               : 2023:04:26 13:09:50
Track Modify Date               : 2023:04:26 13:09:50
Track ID                        : 1
Track Duration                  : 1.00 s
Track Layer                     : 0
Track Volume                    : 0.00%
Matrix Structure                : 1 0 0 0 1 0 0 0 1
Image Width                     : 512
Image Height                    : 512
Media Header Version            : 0
Media Create Date               : 2023:04:26 13:09:50
Media Modify Date               : 2023:04:26 13:09:50
Media Time Scale                : 30000
Media Duration                  : 1.00 s
Media Language Code             : und
Handler Description             : VideoHandler
Graphics Mode                   : srcCopy
Op Color                        : 0 0 0
Compressor ID                   : avc1
Source Image Width              : 512
Source Image Height             : 512
X Resolution                    : 72
Y Resolution                    : 72
Compressor Name                 : AVC Coding
Bit Depth                       : 24
Video Frame Rate                : 30
Handler Type                    : Metadata
Publisher                       : flag_base64:RkxBR3tINHYxbl9mdW5fMW5uMXR9
Image Size                      : 512x512
Megapixels                      : 0.262
Avg Bitrate                     : 1.21 Mbps
Rotation                        : 0

とのこと
Publisherに明らかに怪しい文字列が入ってたから書いてある通りBASE64として`RkxBR3tINHYxbl9mdW5fMW5uMXR9`をデコードしてみると`FLAG{H4v1n_fun_1nn1t}`が出てきた

## whats_happening
ダウンロードしたzipを解凍して出てきたupdogっていうファイルをとりあえずVSCodeで無理矢理開いてみたら以下のようにほとんどが不可視文字だったが、ISOという文字列を見つけた
![スクリーンショット 2023-05-08 9.32.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734184/7c85b3c0-e915-60fe-4372-1d89973d57f1.png)
勘でupdogに拡張子`.iso`を追加してマウントしてみると`FAKE_FLAG.txt`とFLAG.pngが出てきた
![スクリーンショット 2023-05-08 10.27.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734184/02ddae9d-8fa2-edf9-9b45-d431a95045ff.png)
よって`FLAG{n0th1ng_much}`


# Misc
1問目の`Prompt`だけチームメイトが解いてくれた
気が向いたら俺も解こうと思う


# Pwnable
チームメイトが1問目の`netcat`を解いてくれた
俺は手をつけてない

# Reversing
1問目の`Just_Passw0rd`だけ解けた

## Just_Passw0rd
ダウンロードしたzipを解凍して出てきたjust_password.elfっていうELFファイルをとりあえずVSCodeで開いたら大量の不可視文字の中に`FLAG is FLAG{1234_P@ssw0rd_admin_toor_qwerty}`という文字列が混ざってた
![スクリーンショット 2023-05-08 10.37.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734184/75355b21-f1da-89d5-f0cf-6976b452e292.png)
よって、`FLAG{1234_P@ssw0rd_admin_toor_qwerty}`

# Web
1問目の`IndexedDB`だけ解けた

## IndexedDB
Chromeの開発者ツールのアプリケーション欄にIndexedDBという項目があったので開くとFLAGが出てきた
![スクリーンショット 2023-05-08 10.39.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734184/f573f693-c47e-3536-0e25-0fa3f7ce70da.png)
よって、`FLAG{y0u_c4n_u3e_db_1n_br0wser}`


# 感想
知り合い(？)に誘ってもらって2人でチームとして参加した
CTFは初参加だったけど楽しかったから今後もやっていこうと思う