SECCON Beginners 2019 Writeup
学科同期で参加してチームでは35位。
初めは調子よかったのに後半思ったより解けなくてくやしさある。
Welcome (Misc)
がんばる
ctf4b{welcome_to_seccon_beginners_ctf}
Seccompare (Reversing)
0x4006b9
でstrcmp
しているので、そこにブレークポイントおいて実行するとRDIにフラグが入っている
ctf4b{5tr1ngs_1s_n0t_en0ugh}
So Tired (Crypto)
何回繰り返すのかわからないので、とりあえずpythonでがんばったのが以下。 めんどくさかったのでファイルに書き出したけどそれなりに容量食ってそう。
import base64 import zlib i = 1 while True: try: with open(str(i) + '.txt', 'rb') as f: data = f.readline() with open(str(i + 1) + '.txt', 'wb') as f: decode = base64.b64decode(data) f.write(zlib.decompress(decode)) except: break i += 1
ctf4b{very_l0ng_l0ng_BASE64_3nc0ding}
Party (Crypto)
party
とval
という2値が3組と生成コードが与えられるので、いい感じにデコードする問題。
encrypt.py
を見ると、FLAG
をbytes_to_long()
にかけてできたsecret
に、2つの乱数を後ろに連結したリストcoeff
がある。
これを、party
と組み合わせてval
という値が生成されているので、その生成関数f
を見てみると、以下のようになっている(x
がparty
となる)。
def f(x, coeff): y = 0 for i in range(len(coeff)): y += coeff[i] * pow(x, i) return y
このとき、coeff[0]
にほしいsecret
が入っている(coeff[1]
,coeff[2]
は乱数)ので、party
で割った値を出力してやればうまくcoeff[0]
の値175721217420600153444809007773872697631803507409137493048703574941320093728
が手に入る。
これをlong_to_bytes()
にかければフラグ。
解法コードは以下。
from Crypto.Util.number import long_to_bytes party = 5100090496682565208825623434336918311864447624450952089752237720911276820495717484390023008022927770468262348522176083674815520433075299744011857887705787 val = 222638290427721156440609599834544835128160823091076225790070665084076715023297095195684276322931921148857141465170916344422315100980924624012693522150607074944043048564215929798729234427365374901697953272928546220688006218875942373216634654077464666167179276898397564097622636986101121187280281132230947805911792158826522348799847505076755936308255744454313483999276893076685632006604872057110505842966189961880510223366337320981324768295629831215770023881406933 print(long_to_bytes(val % party))
Shamir(シャミア)って書いてあるけど、いまいちつながりがわかってない…
ctf4b{just_d0ing_sh4mir}
Leakage (Reversing)
バイナリだけが渡されるので、とりあえずdisassしてgdbした。
0x400643
のcmpにブレークポイントを置くと、al
(入力文字)と[rbp-0x5]
(正解文字)が比較されているので、x/b $rbp-0x5
で正解文字を調べて1文字ずつ解読していった。つらい。
フラグの文章がそうなってるのでもしかしたら想定解答なのかもしれない……
ctf4b{le4k1ng_th3_f1ag_0ne_by_0ne}
見かけたWriteupメモ
SECCON Beginners CTF 2019 Write-up - Theories of Pleiades
SECCON Beginners CTF 2019 Writeup - こんとろーるしーこんとろーるぶい
SECCON Beginners CTF 2019 Writeup - yoshikingのがんばる日記
SECCON Beginners CTF 2019のWriteup - CTFするぞ
SECCON Beginners CTF 2019 writeup - アオカケスの鳥かご
beginners ctf 2019 himitsu writeup - 空地