LoginSignup
0
0

ksnctf #3 Crawling Chaos

Last updated at Posted at 2024-02-11

ksnctf #3 Crawling Chaos

スクリーンショット 2024-02-11 231302.png
問題のurlにアクセスするとこのようなページが表示されます。
取り合えずこのページのソースコードを見てみましょう。するとこのような顔文字が出てきます。
スクリーンショット 2024-02-11 230324.png
この顔文字の羅列は< script>というタグに囲まれていることが注目ポイントです。これは、Javascriptです。Chromeのデベロッパーツール(F12key)を使って解読していきましょう。
console.log( 文字列 )と入力すると以下のようになります。
スクリーンショット 2024-02-12 055631.png
スクリーンショット 2024-02-12 055646.png
下部分を整理すると以下のようになります。
これは、jQueryという、JavaScriptのライブラリで、JavaScriptのプログラムを簡単に操作できるよう設計されているものです。

function.jq
$(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;
    });
});

このコードは次のことを行っています。
1.$('input[type="text"]').val()でテキスト入力フィールドの値を取得し、変数tに格納します。
2.Array(70,152,195,284,475,612,791,896,810,850,737,1332,1469,1120,1470,832,1785,2196,1520,1480,1449)で配列pを作成します。
3.if(p.length==t.length)でテキストの長さと配列の長さが同じかどうかを確認します。
4.テキストの長さと配列の長さが同じ場合、テキストの各文字の文字コードを取得し、その文字の位置(0から始まる)に1を加えた値と配列の対応する要素を比較します。これが一致しない場合、フラグfをfalseに設定します。
5.最終的に、フラグfがtrueであれば、特定のメッセージをアラートとして表示します。そうでなければ、「No」というメッセージを表示します。
これをpythonで解読するプログラムを書きます。

solve.py
array = [70,152,195,284,475,612,791,896,810,850,737,1332,1469,1120,
         1470,832,1785,2196,1520,1480,1449]

for i in range(len(array)):
    c = array[i] // (i + 1)
    print(chr(c), end="")

print()  #出力 FLAG_fqpZUCoqPb4izPJE

よってFLAGはFLAG_fqpZUCoqPb4izPJEとわかります。

参考文献

console.log->https://qiita.com/furiirakun/items/9180d7f4766bf3219f4b
chr()->https://qiita.com/furiirakun/items/d6a10b2a03a43bedab34

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0