[ksnctf] Crawling Chaos

投稿日: 更新日:

問題

unya.htmlというページに飛ばされました。

解法

HTMLのheadに怪しげなスクリプトがあります。

怪しげなスクリプト

これは(」・ω・)」うー!(/・ω・)/にゃー!encodeというJavaScript難読化方法の1つです。
そこにあるスクリプトをconsole.logで囲って手元のnodeで実行すると以下の出力が得られます。 見やすいように改行やインデントを加えています。

$(function() {
    $("form").submit(function() {
        var t = $('input[type="text"]').val();
        var p = Array(70, 152, 195, 284, 475, 612, 791, 896, 810, 850, 737, 1332, 1469, 1120, 1470, 832, 1785, 2196, 1520, 1480, 1449);
        var f = false;
        if (p.length == t.length) {
            f = true;
            for (var i = 0; i < p.length; i++)
                if (t.charCodeAt(i) * (i + 1) != p[i]) f = false;
            if (f) alert("(」・ω・)」うー!(/・ω・)/にゃー!");
        }
        if (!f) alert("No");
        return false;
    });
});

変数pのArrayの内容がFLAGだと予想できるのでその内容を解読します。
t.charCodeAt(i) * (i + 1) != p[i] から t.charCodeAt(i) == p[i]/(i + 1)という式がすべてにおいて成立するような文字列tが答えです。

補足

最初はテキストボックスに文字列を入力して送信を押しても反応がなかったです。 原因は単純でjQueryがブロックされていました。

jQueryがブロックされた

解決策
URLをhttpsからhttpに変えると正常になります!

書いた人

profile_image

お茶の葉

物理とプログラミングが好きな人