2020年05/23~24に実施されたSECCON Beginners CTF 2020に参加してきました。
結果としては、250位ほどでしたが僕は一個も正解できませんでした…
これからはセキュリティについても学んでいくので、ネットに公開されたWrite Upを参考に解いていきます。
ちなみに問題数が多いのでちょくちょく更新していきます
Web問題
Spy
問題文
As a spy, you are spying on the "ctf4b company".
You got the name-list of employees and the URL to the in-house web tool used by some of them.
Your task is to enumerate the employees who use this tool in order to make it available for social engineering.
てっきり僕はパケット監視でもするのかとか勘違いして、OWASP ZAP使ったのは内緒
解いていく
添付されているapp.pyを見てみるとこんなのが
# auth.calc_password_hash(salt, password) adds salt and performs stretching so many times.
# You know, it's really secure... isn't it? :-)
とりあえず、意味はソルトを何回も追加して何度もストレッチしてます。本当に安全だと思いませんか?:-)
とのこと。どうやら実在するユーザはソルトを何回もかけるため処理が遅くなるらしい。
存在するユーザ名を入力して、適当なパスワードを入力してLoginをしてみると、それぞれのユーザのログイン処理の時間が表示される。
その中で、時間が遅いユーザを洗い出してGo to challenge pageでそのユーザを選択してみると、見事フラグが入手できます。
感想
こういった処理時間によって、どういったユーザが利用しているのかがわかってしまう、、、、コワイ
あと、ちゃんとソースコードは見ましょう(重要)
Misk 問題
emoemoencode
問題文
Do you know emo-emo-encode?
いやしらんがな。
そんなことはさておき、emoemoencode.txtを見てみると
🍣🍴🍦🌴🍢🍻🍳🍴🍥🍧🍡🍮🌰🍧🍲🍡🍰🍨🍹🍟🍢🍹🍟🍥🍭🌰🌰🌰🌰🌰🌰🍪🍩🍽
楽しそう()
余談ですが、この問題は友人が解いていたのですが、CyberChefというサイトを知らなかったので、一個一個調べてやってました(笑)
解いていく
こういった絵文字というのはunicodeというやつらしく、Charcodeを調べるとできるらしい。
Charcode:大文字・小文字が存在しない場合の、Unicodeにおける符号位置を示す。
引用:https://ja.wikipedia.org/wiki/Template:CharCode
CyberChefのInputに先ほどの絵文字の羅列、Operationsより、To Charcodeを選択。すると、Outputに
01f363 01f374 01f366 01f334 01f362 01f37b 01f373 01f374 01f365 01f367 01f361
01f36e 01f330 01f367 01f372 01f361 01f370 01f368 01f379 01f35f 01f362 01f379
01f35f 01f365 01f36d 01f330 01f330 01f330 01f330 01f330 01f330 01f36a 01f369 01f37d
これで、絵文字がCharcodeになりました。
これだけではなにもわからないので、ためしに答え方であるctf4b{}を入れてみると、
63 74 66 34 62 7b 7d
絵文字のCharcodeと比較すると、文末2文字が一致しているのがありますね。
文末2文字を抽出する
63 74 66 34 62 7b 73 74 65 67 61 6e 30 67 72 61 70 68 79 5f 62 79 5f 65 6d 30 30 30 30 30 30 6a 69 7d
これを逆にOperationsをFrom Charcodeに設定してみると、フラグが入手できます。
感想
こういった暗号系で、解答方法にも着目するのは頭がいいなーと思いました。
僕のチームはそれに気づけば答えまで行けましたね… 惜しい