SECCON Beginners CTF Writesup

#　概要
5月26日に開催されたSECCON Beginners CTFに参加してきたのでWritesupを記載します。

# Welcome
問題文に記載されてる通り、公式IRチャットページにアクセスするとフラグが記載されている。
![welcome2.png](https://qiita-image-store.s3.amazonaws.com/0/156890/dac7f655-436d-736c-8bc2-4659eb1193b3.png)
**ctf4b{welcome_to_seccon_beginners_ctf}**
#pain mail
pcapファイルが渡されるため、Wiresharkで読み込む。
Protocol HierarchyとConversationsから以下の情報が分かった。

通信相手は172.19.0.2⇔172.19.0.3で行われている。
ほぼ、SMTPで占められているので、メールでのやりとりと予想。
SMTPでフィルターし、FllowTCPStreamで通信内容を見ると
![mail1.png](https://qiita-image-store.s3.amazonaws.com/0/156890/a9447e10-d4ad-0a67-7c9a-5f119fe3f89d.png)
me@4b.loaclからyou@4b.localにメッセージが送付されており、次に暗号化したファイル、次にパスワードを送付すると記載されている。
次のメールの通信内容は
![mail2.png](https://qiita-image-store.s3.amazonaws.com/0/156890/f2214193-a3a0-eee9-87ae-a95ccbfdb598.png)
encrypted.zipを送付している。
最後のメールの通信内容で
![mail4.png](https://qiita-image-store.s3.amazonaws.com/0/156890/bedb8357-e7d4-3442-e423-cdc6c57e8094.png)
パスワードを送付しているので、上記のencrypted.zipを解凍することでflag.txtが得られる。
**ctf4b{email_with_encrypted_file}**
# veni_vidi_vici
zipファイルがダウンロードし、解凍すると中から3つのファイルが出てくる。それぞれ、以下の内容で復号できる。

- part1　rot13で復号化
- part2　ak →　is　と対応する文字に変換させる
- part3 180度逆なので、180度逆転させる

これらを結合するとフラグが出てくる。
**ctf4b{n0more_cLass!cal_cRypt0graphy}**

#Find the messages
ディスクイメージが与えられる。fileコマンドの結果は以下の通りになる。
![disk1.png](https://qiita-image-store.s3.amazonaws.com/0/156890/5fd60f35-c3eb-bc62-3f89-a8107db238b4.png)
daemonimageでディスクイメージをマウントしてもアクセスできないので、ftkimagerというツールで中を覗いてみる。

![disk2.png](https://qiita-image-store.s3.amazonaws.com/0/156890/52a7e870-c518-5d18-d638-c8163a6f9114.png)
中にはmessage1,2,3のフォルダがありmessage1はテキストファイルで閲覧可能。
base64でデコードするとctf4b{y0u_t0uchedになる。

message2は画像ファイル（png）だが、開くことができない。
バイナリソフトで該当ファイルを開き、最初と最後を確認する。
![disk3.png](https://qiita-image-store.s3.amazonaws.com/0/156890/7c0eab8b-b46d-bd21-571e-0a8aef848d19.png)
PNG形式のファイルの最初は16進数で常に、89 50 4E 47 0D 0A 1A 0Aで開始し、終端はIENDチャンクで終わる。IENDチャンクが存在するので、PNGファイルであると推定されるが、最初が全て58が入力されているので上記の値で上書きすると画像ファイルが復元できる。
![disk6.png](https://qiita-image-store.s3.amazonaws.com/0/156890/f6243300-00c0-b0ab-86c5-6324432b0061.png)

最後のmessage3はファイルが削除されているので、foremostコマンドで復旧する。
auditログを見るとpdfファイルを復元できた旨が表示される。
![disk4.png](https://qiita-image-store.s3.amazonaws.com/0/156890/e5b0e02e-62e9-9a7d-f564-cb7268307fcc.png)
pdfを見ると3つのフラグが表示される。
![disk5.png](https://qiita-image-store.s3.amazonaws.com/0/156890/2101e31d-7cf8-d496-41a4-c63146adbe7a.png)
3つ結合させて、フラグが取得できる。
**ctf4b{y0u_t0uched_a_part_0f_disk_image_for3nsics}**
#SimpleAuth
zipを解凍し、fileコマンドで確認するとELF-64なので、Linuxで実行すると、パスワード入力を求められる。失敗するとUmm...Auth failed...と表示されるので正しいパスワードを入力する必要がある。
IDAProでファイルを逆アセンブラすると以下のようになる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/156890/7e8e1cdb-c225-8041-17a9-5e9727e3aea7.png)
パスワード入力後、auth関数での比較を行い、比較が間違っている場合、失敗に飛ぶようになっている。
auth関数の中を見ると、入力された値とスクリプト内で保持している値を比較している。
比較している値は以下になる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/156890/e017a575-5f19-399f-324c-0f4ecc7a88c3.png)
16進数を変換するとフラグを取得できる。
**ctf4b{rev3rsing_p4ssw0rd}**

#Greeting
ホームページに記載ある通り、adminでしかフラグが表示されない。
しかい、adminを入力するとusernameを偽管理者に書き換えれてしまう。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/156890/c98bc2c6-a9e4-fce8-db82-fb6b00f22b9f.png)

しかし、POSTでusernameを設定するとCookieにusernameをsetする旨が記載されているので、一度adminと入力したのち、再度このページにアクセスするとusernameがadminで設定されるのでフラグが表示される。
![greet2.png](https://qiita-image-store.s3.amazonaws.com/0/156890/3f76346d-57ce-6cda-f231-a3bde7cd48b0.png)
**ctf4b{w3lc0m3_TO_ctf4b_w3b_w0rd!!}**
#感想
初心者向けと言いつつ、Warmup以外は割と難易度が高かった印象。~~自分のレベルが低い~~　
特にpythonを利用して解く問題が多かったイメージなのでpythonのスキルを上げなければと感じた。