WarGame/SuNiNaTaS

[SuNiNaTas] 써니나타스 5번 - WEB

URL은 다음과 같다.

http://suninatas.com/challenge/web05/web05.asp

 

Game 05

 

suninatas.com


해결책

화면은 다음과 같은 로그인 폼이 반겨준다.

주석을 볼까?

가장아래를 보면 주석 힌트로 12342046413275659를 입력하라고 적혀있다.

그리고... 중간에? 이상한 스크립트가 있다. 코드만 보면 다음과 같다. 

eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};
if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);
k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};
while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);
return p}('g l=m o(\'0\',\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\
'8\',\'9\',\'a\',\'b\',\'c\',\'d\',\'e\',\'f\');p q(n){g h=\'\';g j=r
;s(g i=t;i>0;){i-=4;g k=(n>>i)&u;v(!j||k!=0){j=w;h+=l[k]}}x(h==\'\'?\'
0\':h)}',34,34,'||||||||||||||||var|result||start|digit|digitArray|new
||Array|function|PASS|true|for|32|0xf|if|false|return'.split('|'),0,{}))		

저 게실 제로는 필자가 보기 편하려고 줄 바꿈을 한 거지, 사실 한 줄이다. 이건 난독화(Obfucation)되어있다고 봐야한다. 다행히도 7줄 정도의 난독화면 충분히 원래 코드로의 복구가 가능할 것으로 예상한다. 해외 사이트의 힘을 빌리자.

https://www.strictly-software.com/unpack-javascript

 

Javascript Unpacker Tool - Strictly Software

This Javascript unpacker tool has now been upgraded to allow it to unpack multiple eval statements. So if your packed code has itself been packed a few times it will loop through until it finds the original source code. If you want to test this multiple ev

www.strictly-software.com

그렇구만 코드는 다음과 같다. 복구 코드를 짜고 싶긴 한데, 귀찮다. 무엇보다. 하나의 결과만을 내는 것이 아닌 PASS()에 들어가는 인자 n에 따라 결과가 바뀌니, n을 어디선가 찾아와야 될 거 같은데....

찾긴 뭘찾나 n은 HINT에 따라12342046413275659이다.

나온 결과를 KEY에 입력하여 Auth code를 받을 수 있다.