【ネタバレ注意】ksnctf #3 | 這うカオス

eyecatch


はじめに 

順当に3つ目に挑戦。
1時間程度で解けた。。もう少し早く解けたかもしれない。

問題 

https://ksnctf.sweetduet.info/problem/3

問題はこれだけ。

解き方 

まずChromeでソースコードを見てみる。




















するとScriptタグの中ににゃーにゃー言っている謎の長文を発見。
よくよく見るとカンマなどがあるので、もしかして難読化されているJSか何かではないかと推察。

その部分だけ切り出して見ると、末尾に関数「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;
  });
});
どうやら9行目が鍵となりそう。
tで入力された文字列のn文字目がp配列のn+1個目とかけ合わせた値が等しければOK

つまり、p配列をそれぞれ、配列番号で割ってあげればいいということになる。

ネットを見るとコーディングしている方もいたが、自分にはそんな能力がないので安定のGoogleスプレッドシート。

A列にはp配列を格納、B列には行番号で割った物(B2セルは=A2/ROW())が入っている。すると、C列に結果が表示された。
これが答えのようだ。

解説 

Javascriptはよく難読化されているが、ここまで気持ち悪いセンスあるのははじめてでした笑


おすすめ

この本はみんな使っているかと思います


コメント