![[ksnctf] Crawling Chaos [ksnctf] Crawling Chaos](/images/1/9/2/e/4/192e4e4156d5443760550a45a31b1177303c1a86-03a.png)
ksnctfにチャレンジ 第3問目です。
※ksnctfは常駐型のCTFサイトです。 ※問題のページはコチラです。
Crawling Chaos
難読化されたJavaScriptに関する問題です。 パスワードを判定していると思われるJavaScriptが (ᒧᆞωᆞ).ᒧうー=-!!(/ᆞωᆞ/).にゃー といったAAを使って難読化されています。 これを手動で解読するのは面倒ですので FireBugなどのツールを使って解析します。
FireBugのスクリプトタグで表示モードが すべて(= 静的 評価 イベントスクリプト 表示) になっていることを確認し、適当な文字列を 送信 すると
難読化されたコードから生成された本丸のコードが読めるようになります。 これによると入力された文字に対して 文字列の N文字目 が Mの場合 Mの文字コード * N を行って 配列p の内容と一致しているか 調べているので逆に 配列P の数値を 1 ,2 ,3 … で割っていけば 元の文字コードがわかります。
#include <stdio.h>
int main()
{
int i;
int p[] = { 70,152,195,284,475,612,791,896,810,
850,737,1332,1469,1120,1470,832,1785,
2196,1520,1480,1449 };
for(i=0; i<(sizeof(p)/sizeof(int)); i++)
{
putchar(p[i]/(i+1));
}
putchar('\n');
return 0;
}