SECCON Beginners CTF 2020 Writeup
SECCON Beginners CTF 2020に参加しました。
157点で1009チーム中465位でした。3問しか解けてなくてwriteupなんて書くのはおこがましい気もするのですが、去年は1問しか解けなかったので記念に書いておきます。
RB
problem.pyを見ると、rot13とbase64で何度もエンコードしている。先頭の文字を見ればどちらでエンコードしたか分かる。
デコードで使ったコード(Python)
import codecs import base64 path = "encoded_flag" with open(path) as f: t = f.read() while True: if t[0] == 'B': t = base64.b64decode(t[1:]).decode() elif t[0] == 'R': t = codecs.decode(t[1:], "rot13") else: break print(t)
Spy
問題文に書いてあるURLを見に行くと何かのログインページになっている。そして与えられたapp.pyはサーバ側に相当しそう。
パスワードが合っているか判定する部分に脆弱性があるのではないかと思ったが、しっかりハッシュを使っていて問題なさそうに見える。
しばらくしてアカウントがない人はパスワードをチェックしていないことに気づいた。ということはアカウントがある人とない人では応答時間が違うのではないかと考えた。
応答時間は、ログインしようとすると少し薄い字だが表示してくれる。E, G, L, M, T, X, Yが長かったので、それで試してみるとフラグが得られた。
おわりに
相変わらずBeginnersといいつつ初心者の僕には解けない問題ばかりでした。AtCoder Beginner Contestも最初は2,3問しか解けなかったのでそういうものなのかもしれませんが。
来年はBeginnerタグがついてる問題くらいは解けるようになっていたいです。