Eyes, JAPAN Blog > ksnCTF Crawling Chaos

ksnCTF Crawling Chaos

beko

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

こんにちは、山田です。
今回はksnctfというサイトにあるCrawling Chaosというweb系の問題を解いていきたいと思います。

まずここの問題で与えられているページに飛ぶと入力フォームのみ表示されるので、とりあえず適当な文字列を入れてみると、
20141205122607
Noと表示されます。

ここに、正しい文字列を入力するとflagが表示されそうです。

ここでページのソースコードを見てみると、明らかに変なスクリプトが….
20141205122745

こいつをずっと見ていっても、永遠とうーにゃーと書いてあるので、一旦放置して他のところを見ましょう。

jquery.min.jsというのが他にもあるので、そいつを見てみると5000行近い量のコードが書いてありformで文字検索をかけて、怪しそうなところを探ってみたりしたんですが、何も見つけられず。

諦めて、うーにゃースクリプトを改めて見返してみると、これもすごく長いコードなのですが、途中に”,”や”+”や”!”など正規表現を使ってそうだし、きっとこれはスクリプトエンコードして分からないようにしてるだけでデコードしてみたらちゃんと読めるコードが返ってくるだろうとデコードの仕方を模索している時、ふとページを更新してみると
20141206182651
firebugがうーにゃースクリプトの中身のfunctionを見つけてくれていました。
今回、偶然見つかった形ですが、これ入力フォームに一回でも文字列を入力してエンターを押してページを更新すると、見つけてくれるようです。

早速これの中身を見てみると
20141206193927
こんなスクリプトが書かれていました。
pの中身をfor文の中で変換してそれと一致したら正解と出てくるっぽいので、要するにこれが答えかもと思い、C言語でこのコードに書かれている計算と逆のことをするコードを書いてみました。
20141206195903
そして実行してみると。
20141206200025
綺麗に答えが出てきたので入力フォームに入れて、確認をしてみると20141206200223
と出てたので正解でした。

今回はweb系の問題解きましたが、運が良かった感じは否めないので、色んな問題を解いて実力をつけていきたいと思います。

Comments are closed.