반응형

SuNiNaTaS의 5번문제 풀이입니다. 


[WEB]




key 값을 확인한다


페이지 소스를 봅시다.


난독화된 JS코드

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,{}))


힌트

<!--Hint : 12342046413275659 -->

<!-- M@de by 2theT0P -->



난독화된 코드를 언패킹해봐야 알 수 있을 것 같네요.


위에 처럼 패킹된 코드는 콘솔창에서 console.log로 언패킹할 수 있다.




언패킹한 코드를 정렬

var digitArray=new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');

function PASS(n)

{

var result='';

var start=true;

for(var i=32;

i>0;

)

{

i-=4;

var digit=(n>>i)&0xf;

if(!start||digit!=0)

{

start=false;

result+=digitArray[digit]

}

}

return(result==''?'0':result)

}




근데... 소스코드를 뒤져봐도 PASS()함수를 사용하는 코드가 없다......


직접 사용해야하나..?


PASS()함수의 인자로 힌트에 나온 정수를 넣어보았다.




9c43c20c 라는 값이 나왔다. 이 값을 폼에 넣었더니 key가 나왔다.


반응형

'WAR GAME > SuNiNaTaS' 카테고리의 다른 글

SuNiNaTaS [WEB 7번] 풀이  (0) 2018.07.31
SuNiNaTaS [WEB 6번] 풀이  (0) 2018.07.31
SuNiNaTaS [WEB 4번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 3번] 풀이  (0) 2018.07.30
SuNiNaTaS [WEB 2번] 풀이  (0) 2018.07.30

+ Recent posts