문제만 봐서는 알 수가 없어서 페이지 소스를 살펴 보았다.
하단에 힌트가 적혀 있고 중간에 eval로 시작하는 코드가 길게 적혀 있다.
eval이 뭔지 몰라 구글링을 해 보니 자바 스크립트에서 문자열을 코드로 인식하게 하는 함수라고 한다.
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,{}))
아무리 해석해 보려고 해도 내가 할 수 있는 건 아닌 것 같아 function(p,a,c,k,e,r)를 구글링 하다 unPacker(https://matthewfl.com/unPacker.html)라는 사이트를 발견했다.
사이트에 본래 적혀 있는 코드가 아까 페이지 소스 코드에서 발견한 코드랑 형식이 같았다.
그래서 아까 발견한 코드를 넣고 Unpack을 했더니 코드가 해석되었다.
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)
}
아까 페이지 소스 코드에 힌트가 있었는데 그걸 n에 넣으면 될 것 같다.
콘솔 창에서 PASS 함수에 힌트로 주어진 숫자를 넣으니 key가 나왔다.
위에서 얻은 키를 입력하니 Authkey 값이 떴다.
문제 해결 성공!
[suninatas] 4번 (0) | 2022.07.10 |
---|---|
[suninatas] 3번 (0) | 2022.07.10 |
[suninatas] 2번 (0) | 2022.07.06 |
[suninatas] 1번 (0) | 2022.07.04 |
댓글 영역