ksnctf #03 Crawling Chaos
原來顏文字可以這麼強大 (´⊙ω⊙`)
題目的原始碼script裡面充滿著大量的顏文字,以下節錄一小部份:
(ᒧᆞωᆞ)=(/ᆞωᆞ/),(ᒧᆞωᆞ).ᒧうー=-!!(/ᆞωᆞ/).にゃー,(〳ᆞωᆞ)=(ᒧᆞωᆞ),(〳ᆞωᆞ).〳にゃー=- -!(ᒧᆞωᆞ).ᒧうー,(ᒧᆞωᆞ).ᒧうーー=(〳ᆞωᆞ).〳にゃー- -!(ᒧᆞωᆞ).ᒧうー,(〳ᆞωᆞ).〳にゃーー=(ᒧᆞωᆞ).ᒧうーー- -(〳ᆞωᆞ).〳にゃー,(ᒧᆞωᆞ).ᒧうーー=(〳ᆞωᆞ).〳にゃーー- -!(ᒧᆞωᆞ).ᒧうー,(〳ᆞωᆞ).〳にゃーー=(ᒧᆞωᆞ).ᒧうーー- -(〳ᆞωᆞ).〳にゃー,(ᒧᆞωᆞ).ᒧうーーー=(〳ᆞωᆞ).〳にゃーー- -!(ᒧᆞωᆞ).ᒧうー,(〳ᆞωᆞ).〳にゃーーー=(ᒧᆞωᆞ).ᒧうーーー- -(〳ᆞωᆞ).〳にゃー,(ᒧᆞωᆞ).ᒧうーーー=(〳ᆞωᆞ).〳にゃーーー- -!(ᒧᆞωᆞ).ᒧうー,(〳ᆞωᆞ).〳にゃーーー=(ᒧᆞωᆞ).ᒧうーーー- -(〳ᆞωᆞ).〳にゃー,ー=’’,(ᒧᆞωᆞ).ᒧうーーー=!(ᒧᆞωᆞ).ᒧうー+ー,(〳ᆞωᆞ).〳にゃーーー=!(〳ᆞωᆞ).〳にゃー+ー,(ᒧᆞωᆞ).ᒧうーーー={這いよれ:!(〳ᆞωᆞ).〳にゃー}+ー,(〳ᆞωᆞ).〳にゃーーー=(ᒧᆞωᆞ).ᒧニャル子さん+ー,(ᆞωᆞᒪ)=(コᆞωᆞ)=(ᒧᆞωᆞ).ᒧうー,(ᒧᆞωᆞ).ᒧうーーーー=(〳ᆞωᆞ).〳にゃーーー[(ᆞωᆞᒪ)- -(〳ᆞωᆞ).〳にゃー-(コᆞωᆞ)],(〳ᆞωᆞ).〳にゃーーーー=(ᒧᆞωᆞ).ᒧうーーー[(ᆞωᆞᒪ)- -(ᒧᆞωᆞ).ᒧうーー-(コᆞωᆞ)],(ᒧᆞωᆞ).ᒧうーーーー=(ᒧᆞωᆞ).ᒧうーーー[(ᆞωᆞᒪ)- -(〳ᆞωᆞ).〳にゃーー-(コᆞωᆞ)],(〳ᆞωᆞ).〳にゃーーーー=(〳ᆞωᆞ).〳にゃーーー[(ᆞωᆞᒪ)- -(ᒧᆞωᆞ).ᒧうーー-(コᆞωᆞ)],(ᒧᆞωᆞ).ᒧうーーーー=(ᒧᆞωᆞ).ᒧうーーー[(ᆞωᆞᒪ)- -(〳ᆞωᆞ).〳にゃーー-(コᆞωᆞ)],(〳ᆞωᆞ).〳にゃーーーー=(〳ᆞωᆞ).〳にゃーーー[(ᆞωᆞᒪ)-(コᆞωᆞ)],(ᒧᆞωᆞ).ᒧうーーーー=(〳ᆞωᆞ).〳にゃーーー[(ᆞωᆞᒪ)- -(〳ᆞωᆞ).〳にゃー-(コᆞωᆞ)],(〳ᆞωᆞ).〳にゃーーーー=(ᒧᆞωᆞ).ᒧうーーー[(ᆞωᆞᒪ)- -(〳ᆞωᆞ).〳にゃー-(コᆞωᆞ)],(ᒧᆞωᆞ).ᒧうーーーー=(ᒧᆞωᆞ).ᒧうーーー[(ᆞωᆞᒪ)- -(〳ᆞωᆞ).〳にゃー-(コᆞωᆞ)],(〳ᆞωᆞ).〳にゃーーーー=(〳ᆞωᆞ).〳にゃーーー[(ᆞωᆞᒪ)- -(〳ᆞωᆞ).〳にゃーー-(コᆞωᆞ)],(ᒧᆞωᆞ).ᒧうーーーー=(ᒧᆞωᆞ).ᒧうーーー[(ᆞωᆞᒪ)-(コᆞωᆞ)],(〳ᆞωᆞ).〳にゃーーーー=(〳ᆞωᆞ).〳にゃーーー[(ᆞωᆞᒪ)-(コᆞωᆞ)],(ᒧᆞωᆞ).ᒧうーーーー=/“”ω””/+/\ω\/,(〳ᆞωᆞ).〳にゃーーーー=(ᒧᆞωᆞ).ᒧうーーーー[(ᆞωᆞᒪ)- -(〳ᆞωᆞ).〳にゃー-(コᆞωᆞ)],(ᒧᆞωᆞ).ᒧうーーーー=(ᒧᆞωᆞ).ᒧうーーーー[(ᆞωᆞᒪ)- -(〳ᆞωᆞ).〳にゃーーー-(コᆞωᆞ)],(〳ᆞωᆞ).〳にゃーーーー=(ᒧᆞωᆞ).ᒧうーーーー+(〳ᆞωᆞ).〳にゃーーーー,(ᒧᆞωᆞ).ᒧうーーーーー=(〳ᆞωᆞ).〳にゃーーーー+(ᒧᆞωᆞ).ᒧうー+(ᒧᆞωᆞ).ᒧうー,(〳ᆞωᆞ).〳にゃーーーーー
雖然馬上可以知道肯定是某種JS混淆,但這樣子的混淆方式還真的是第一次看到。是有搜尋到一位日本人發明的aaencode,但找到的online decoder沒辦法解密出來,思考了一段時間意識到最近都在寫Node.js,既然這是個script那為何不丟給Node.js執行看看呢?不丟還好,一丟不得了,還真的把東西全噴出來了!
1 | undefined:2 |
總而言之呢,souce code到手了,整理一下分析程式碼就可以發現其實只是簡易的數學運算而已。
1 | $(function () { |
寫個簡易的C程式就可以順利拿到flag。
1 |
|
FLAG_fqpZUCoqPb4izPJE