티스토리 뷰

12번 문제를 누르면 javascript challenge 라는 문구가 써 있다.

 

F12를 누르면

이런 코드가 나온다.

코드를 해석하면 WorkTimeFun이라는 변수는 위에 잔뜩 써 있는 숫자들을 모두 아스키코드 표로 원래 문자로 바꾸라는 뜻이고

eval(WorkTimeFun);은 WorkTimeFun을 실행하라는 뜻이다.

 

숫자를 어떻게 변환할지 몰라서 한글을 켜서 아스키코드 표를 보며 하나씩 바꾸었다(콘솔에 입력하여 한번에 바꿀 수 있다는걸 알고 샷건을 쳤다)

코드를 전부 변환하면

 

이런 코드가 나온다.

 

이것저것 찾아보며 알아낸 것은

var ck=document.URL.substr(document.URL.indexOf('='));에서

http://webhacking.kr/challenge/codeing/code3.html에는 =이 없으므로

var ck=document.URL.substr(-1);이 되고 substr(-1)은 맨 오른쪽부터 문자 하나를 추출하는 것이므로 l을 추출하여 ck=l이 된다.

 

for(i=1;i<122;i++)

{

enco=enco+String.fromCharCode(i,0);

}

에서 enco는 1~121번에 해당하는 아스키코드를 나열한 문자열이 된다.

 

function enco_(x)

{

return enco.charCodeAt(x); ->

}

에서 enco_(x)값은 x에 넣은 문자를 아스키코드로 바꾼 값을 출력한다.

 

문제는 if문인데

if(ck=="="+String.fromCharCode(enco_(240))+String.fromCharCode(enco_(220))+String.fromCharCode(enco_(232))+String.fromCharCode(enco_(192))+String.fromCharCode(enco_(226))+String.fromCharCode(enco_(200))+String.fromCharCode(enco_(204))+String.fromCharCode(enco_(222-2))+String.fromCharCode(enco_(198))+"~~~~~~"+String.fromCharCode(enco2)+String.fromCharCode(enco3))에서

위의 설명대로라면 enco_(240)은 240번의 아스키코드 문자를 출력해야 하는데

아스키코드는 127번까지밖에 존재하지 않다.

여기서 더 이상 풀이를 진행하지 못했고 결국 인터넷의 도움을 받았다.

 

인터넷에서는

String.fromCharCode(enco_(240))+String.fromCharCode(enco_(220))+String.fromCharCode(enco_(232))+String.fromCharCode(enco_(192))+String.fromCharCode(enco_(226))+String.fromCharCode(enco_(200))+String.fromCharCode(enco_(204))+String.fromCharCode(enco_(222-2))+String.fromCharCode(enco_(198))+"~~~~~~"+String.fromCharCode(enco2)+String.fromCharCode(enco3)

을 복사하여 콘솔에 출력하라고 하였고

 

이렇게 값이 나왔다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함