iwasiblog

イワシブログ - Activity log of an iwasi -

SECCON Beginners CTF 2021 Writeup

作問者Writeupが公開されている問題も多いですが,一応こう解いたよ,という記録です.

大会概要

  • Time: 2021/05/22 14:00 (JST) ~ 2021/05/23 14:00 (JST)
  • Style: Jeopardy (Dynamic Scoring)

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}

成績

f:id:kuroiwasi:20210523145402p:plain
ctf4b2021_score