1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

KSNCTF#3 Crawling Chaosを解く

Posted at

今回は
http://ksnctf.sweetduet.info/problem/3
を解きます。
screenshot-ksnctf.sweetduet.info-2019.07.14-16_39_31.png

問題とか何も書いてなくただ
http://ksnctf.sweetduet.info/q/3/unya.html
のURLだけ。

開くとこんなページに
screenshot-ksnctf.sweetduet.info-2019.07.14-16_40_35.png

入力できる場所あるので適当に入力して見たら
スクリーンショット 2019-07-14 16.49.26.png
NOって言われました。

とりあえずヒントを探すために右クリックから要素でデバック画面を開く
htmlを全部出してみると
スクリーンショット 2019-07-14 16.57.03.png
なんかめっちゃうーにゃー言ってる...

わからなかったらGoogle検索したらこんなサイトを見つけた
screenshot-sanya.sweetduet.info-2019.07.14-17_18_13.png

Javascriptをうーにゃーに変更してくれるみたい。
とりあえずページ内のうーにゃーをconsole出力してみる
console.log(うーにゃー)

エラー・・・
スクリーンショット 2019-07-14 17.20.17.png

最後の+と...をとったらエラーは消えてなんか出てきた

スクリーンショット 2019-07-14 17.21.17.png

uから始まるこれはUNICODE
なんか特徴的だったから覚えてた。

前回使った
https://cryptii.com
を使ったらなんかうまくいかない・・・
screenshot-cryptii.com-2019.07.14-17_24_39 (1).png

別サイトでやってみたらうまく行った
https://www.kwonline.org/u_esc_seq.php
screenshot-www.kwonline.org-2019.07.14-17_25_36.png

$(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.len

なんか・・・・足りてなくね・・・
ここで1時間ぐらい悩んでました。

色々と試してふと直接保存してscriptをみてみたら
スクリーンショット 2019-07-14 17.36.08.png

unya.htmlが2万文字超え
ブラウザが1万文字

あれ・・・・データが途中までしか表示されてませんでした。

Chrome側の仕様なのかな?

unya.htmlのほうのうーにゃーをconsole.log()してみると
スクリーンショット 2019-07-14 17.39.43.png

ソースコード付きで帰ってきました。

綺麗にみやすくしたのがこれ

$(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とfしかいらないですよねこれ

$(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
        }
    // });
});

大事な部分
charCodeAt(i) * (i + 1) != p[i]

charCodeAtは文字を数字にするものらしい。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt

ということはあのプログラムはpに当てはまる数字の文字であれば正解を返してくれるという感じ

なのでpを文字に置き換えるプログラムに書き換える。
文字→数字はCharCodeAt
数字→文字はfromCharCode

ここからはもう簡単

        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 = true;
            for (var i = 0; i < p.length; i++) {
                console.log(String.fromCharCode(p[i]/(i+1)))
            }

このコードを
http://ksnctf.sweetduet.info/q/3/unya.html
のConsoleで打ってやれば
スクリーンショット 2019-07-14 18.18.28.png

FLAGが出てきました。

あとはこれを入力すれば
screenshot-ksnctf.sweetduet.info-2019.07.14-18_20_58.png

GG

htmlをそのままダウンロードしないといけないのに注意すればあとは楽そう。

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?