CCC CTF Writeup

ども, nullです.

先日開催されたCCC CTFのWriteupを書きます. 解けた問題は一問だけなのでそこまで内容のあるものでは無いです.

解いた問題:
Web100 regexdb[Web]


regexdb
問題文: Ever played Googlewhack? Well, this is a bit easier and gives you more power, enjoy.

意訳すると, 「ねぇねぇ, Googlewhackで遊んだことあるー? えっとね, このregexdbはGooglewhackよりもちょっぴり簡単でキミの実力もつくんだよっ♪ がんばってねっ!!(可愛い女の子風)」です.


僕はGooglewhack自体知らなかったのでそれを調べるところから始めました.
簡単に言うと, Googlewhackは「Googleにクエリを投げる組み合わせで結果が一件しか返ってこない組み合わせを見つけるゲーム」です.
よって, 「この問題の趣旨はDB上にFLAGがあるので, それを正規表現を使って見つけなさい.」ということが分かります.


正規表現も解らないので一から調べながら解いていきました.

最終的な手順は,

1. DBに登録されてる文字列の長さを調べる
2. 1件ヒットするものでFLAGでないものを除く
3. 残ったものを特定する

です.
文字列の長さの特定にはこのスクリプトを使いました.


結果はこうなりました.
ここで注目すべきは, 10, 17, 40のところです. それぞれ2文字の文字列があります.
おそらく, FLAGは40文字だろうと思ったので, ここを重点的にサーチしていきました.
/(^.{40}$)/
から徐々に
/(^\w.{39}$)/
という感じに探して行きました.
ASCIIで考えて範囲指定などをすれば時間はかかりますが, できます.


FLAG: 29C3_Well.This/Is#Not+The|Wrong?Key


感想
他の問題がむずかしくて全然解けなくて残念でした.
ただ, 正規表現の勉強にはなったのでよかったです.
普段コードを書いたりしないせいで3時間くらいかかったのは課題です.
引き続き精進していきたいです.


ではでは