[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がブロックされていました。
解決策
URLをhttpsからhttpに変えると正常になります!