SECCON Beginners CTF 2021 Writeup
作問者Writeupが公開されている問題も多いですが,一応こう解いたよ,という記録です.
大会概要
Agenda (得点は競技終了時のもの)
- welcome (welcome 51pts)
- Logical_SEESAW (crypto 118pts)
- only_read (mreversing 55pts)
- osoba (web 51pts)
- json (web 109pts)
- cant_use_db (web 108pts)
- git-leak (misc 58pts)
- Mail_Address_Validator (misc 76pts)
- depixelization (misc 136pts)
welcome
welcome
Welcome to SECCON Beginners CTF 2021! フラグはDiscordサーバのannouncementsチャンネルにあります。 /*url*/
discordサーバーの当該チャンネルに書いてあるので見るだけ.
ctf4b{Welcome_to_SECCON_Beginners_CTF_2021}
crypto
Logical_SEESAW
We have an innovative seesaw! Logical_SEESAW.tar.gz 323d2e48e60f4ed521c88acf5d274d3c003ecdd7 想定難易度: Beginner
ランダムなビット列である暗号鍵とビットごとに確率的にANDを取る暗号化.16回ぶんの結果が渡される. 各結果を見比べて,あるビットについてどれも同じなら平文から変わっておらず,ランダムな場合は平文のビットが1で確定する. 得られたビット列をasciiで解釈してflag.
ctf4b{Sh3_54w_4_SEESAW,_5h3_54id_50}
reversing
only_read
バイナリ読めなきゃやばいなり〜 chall 271938a479a59fe40438b9ecf0e2fca002fe085b 想定難易度: Beginner
実行ファイルをidaに突っ込んで処理を追うと入力文字列を一文字ずつ比較しているので,全て合わせるとflag.
ctf4b{c0n5t4nt_f0ld1ng}
web
osoba
美味しいお蕎麦を食べたいですね。フラグはサーバの /flag にあります! /*url*/ osoba.tar.gz 566021e832a474559dfb67f5d3cd0bed14147f9b 想定難易度: Beginner
GETのパラメータに指定したファイルをレスポンスで返してくるwebアプリ. 配布ファイルを見るとルートディレクトリ下にflagというファイルがあることがわかるので,それを指定する.
ctf4b{omisoshiru_oishi_keredomo_tsukuruno_taihen}
json
外部公開されている社内システムを見つけました。このシステムからFlagを取り出してください。 /*url*/ json.tar.gz ce98dc233a9d77370045f306eb80cf73a17016f3 想定難易度: Medium
ローカルネットワーク(192.168.111.0/24)内からのみ閲覧可能な設定のgo製webアプリ.アプリ内でipのチェックをおこなっている.リクエストヘッダに X-Forwarded-For
を付けると騙せる.
webアプリ自体はpostのパラメータでjsonを送り,id要素の内容に応じたレスポンスを返す(flag用のidは弾く仕様).同じ名前の要素が複数あるとチェックをすり抜けられるので,jsonを {"id":2,"id":1}
と送るとflagが帰ってくる.
ctf4b{j50n_is_v4ry_u5efu1_bu7_s0metim3s_it_bi7es_b4ck}
cant_use_db
Can't use DB. I have so little money that I can't even buy the ingredients for ramen. 🍜 /*url*/ cant_use_db.tar.gz 1cded20dd165e1eca3cc12bee2010e65fe6ba9ea 想定難易度: Medium
所持金$20000で麺($10000)を2つ以上とスープ($20000)を1つ以上買う.
DBの代わりにテキストファイルの内容を書き換えて情報を管理している.
トランザクションの排他制御がされていないうえ,わずかなsleepが挟まっているので,連打で購入してflag.
ctf4b{r4m3n_15_4n_3553n714l_d15h_f0r_h4ck1n6}
misc
git-leak
後輩が誤って機密情報をコミットしてしまったらしいです。ひとまずコミットを上書きして消したからこれで大丈夫ですよね? git-leak.zip df0dc798437439dac5195f2b56adb35ce0d93b61 想定難易度: Easy
git reflogコマンドを実行するとファイルを追加したコミットを消した痕跡が分かる.git resetで対象のIDを指定するとflagの書かれたファイルが復活する.
ctf4b{0verwr1te_1s_n0t_c0mplete_1n_G1t}
depixelization
Can you depixelize it ? depixelization.tar.gz be6484841b5f6086c9f2609fdce5622313308688 想定難易度: Medium
ピクセルの情報が書き換えられて読めなくなったflagの画像と,加工のためのスクリプトが渡される. すべての文字に一定の処理がされていることがわかるので,flagに取り得るすべての文字を出力して,パターンマッチング.
ctf4b{1f_y0u_p1x_y0u_c4n_d3p1x}
Mail_Address_Validator
あなたのメールアドレスが正しいか調べます. nc /*url*/ 5100 main.rb 67c79eaacc9fbb51d24b4d704438914ca5f8d47c 想定難易度: Easy
メールアドレスを入力すると正規表現にマッチするかどうか判定する.タイムアウトのエラーを起こすとflag.
正規表現のワイルドカードで判定している部分に長めの文字列を入れて( a.a@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.a
など)送ると処理時間がかかってエラーになる.
ctf4b{1t_15_n0t_0nly_th3_W3b_th4t_15_4ff3ct3d_by_ReDoS}