読者です 読者をやめる 読者になる 読者になる

田舎院生のセキュログ

自分用のメモとかWrite-up

#3 Crawling Chaos

Write-up ksnctf

問題

f:id:swime:20161224171905j:plain
フォームが1つあるだけ。

解法

とりあえずソースコードを見てみる
f:id:swime:20161224171739j:plain
難読化JavaScriptコードがありますねー
これは得意分野(/・ω・)/

解読方法は色々あると思うけど、自分はChromeデベロッパーツールに慣れているので、それで開いてみる。
この程度の難読化なら、スクリプトの開始部分にブレイクポイントを設定して、コードの実行処理を追っていけば解読できる。
f:id:swime:20161224172633j:plain

で、JavaScriptデバッグしていくと・・・
f:id:swime:20161224172811j:plain
あっさり解読完了('Д')

コードを見ると・・・
フォームに正しい文字列を入力すると「(」・ω・)」うー!(/・ω・)/にゃー!」と書かれたアラートが表示される。
正しい文字列というのが、配列のi番目/iの値をASCII文字に変換して、連結したもの。

解析コードは書く必要もないと思うけど、一応書いておきます。

int_array = [70, 152, 195, 284, 475, 612, 791, 896, 810, 850, 737, 1332, 1469, 1120, 1470, 832, 1785, 2196, 1520, 1480, 1449]
count = 1
flag = ""
for x in int_array:
    flag += chr(int(x/count))
    count += 1

print(flag)

出力結果(フラグ)

FLAG_fqpZUCoqPb4izPJE

確認として、フォームにこの文字列を入力すると・・・
f:id:swime:20161224174117j:plain

ってことで、フラグゲットー(/・ω・)/


普段、実際に攻撃をするような悪性Webサイトの難読化コードを解読してる自分にとっては簡単でしたね。。