開発
ksnCTF Crawling Chaos
beko
こんにちは、山田です。
今回はksnctfというサイトにあるCrawling Chaosというweb系の問題を解いていきたいと思います。
まずここの問題で与えられているページに飛ぶと入力フォームのみ表示されるので、とりあえず適当な文字列を入れてみると、
Noと表示されます。
ここに、正しい文字列を入力するとflagが表示されそうです。
ここでページのソースコードを見てみると、明らかに変なスクリプトが….
こいつをずっと見ていっても、永遠とうーにゃーと書いてあるので、一旦放置して他のところを見ましょう。
jquery.min.jsというのが他にもあるので、そいつを見てみると5000行近い量のコードが書いてありformで文字検索をかけて、怪しそうなところを探ってみたりしたんですが、何も見つけられず。
諦めて、うーにゃースクリプトを改めて見返してみると、これもすごく長いコードなのですが、途中に”,”や”+”や”!”など正規表現を使ってそうだし、きっとこれはスクリプトをエンコードして分からないようにしてるだけでデコードしてみたらちゃんと読めるコードが返ってくるだろうとデコードの仕方を模索している時、ふとページを更新してみると
firebugがうーにゃースクリプトの中身のfunctionを見つけてくれていました。
今回、偶然見つかった形ですが、これ入力フォームに一回でも文字列を入力してエンターを押してページを更新すると、見つけてくれるようです。
早速これの中身を見てみると
こんなスクリプトが書かれていました。
pの中身をfor文の中で変換してそれと一致したら正解と出てくるっぽいので、要するにこれが答えかもと思い、C言語でこのコードに書かれている計算と逆のことをするコードを書いてみました。
そして実行してみると。
綺麗に答えが出てきたので入力フォームに入れて、確認をしてみると
と出てたので正解でした。
今回はweb系の問題解きましたが、運が良かった感じは否めないので、色んな問題を解いて実力をつけていきたいと思います。