Webhacking Writeup old-12번 문제 입니다.
자바스크립트에 관련된 문제라고 힌트를 줍니다
검사로 자바스크립트를 확인해 보겠습니다.
이건....뭐지? 라는 소리가 절로 나옵니다.
일단 모르겠으니 이모티콘 앞부분하고 자바스크립트로 구글링을 해봤습니다.
aa인코더라는 자바스크립트의 프로그램이 있는데 그걸 사용한 문제같습니다.
완벽하게 디코더가 잘됬습니다.
코드를 해석해보자면 enco라는 값에 String.fromCharCode(i,0); 으로 122번반복해 엄청 긴 문자열을 만들고
String.fromCharCode(enco_(num))로 인수로 받는 숫자의 위치에 해당하는 문자를 뽑아내는 소스인데
이렇게 뽑아낸 값이 ck값과 같다면 "=" 문자는 빈칸으로 바꾸고 ./ 와 .php를 추가해 해결하는 문제입니다.
그런데 enco.charCodeAt( ) 가 무슨 함수인지 몰라 검색을 해봤습니다.
주어진 인덱스를 65535중 한개의 UTF-16코드 즉 문자로 나타낸다는 것입니다.
해서 위 php코드를 살짝 변경해 진행상황을 눈으로 볼 수 있게 만들었습니다.
var enco='';
var enco2=126;
var enco3=33;
var ck=document.URL.substr(document.URL.indexOf('='));
for(i=1;i<122;i++){
enco=enco+String.fromCharCode(i,0);
console.log(enco)
}
function enco_(x){
return enco.charCodeAt(x);
}
var a="="+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)
a="./"+a.replace("="," ")+".php";
console.log(a);
console.log를 추가해 실행한 결과
enco의 최종값은 아래의 값이라고 합니다.
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy
이 값을 이용한 최종 .php가 붙은 값은
/youaregod~~~~~~~!.php 였습니다. 이 값을 문제 페이지의 삽입해보겠습니다.
문제가 해결되었습니다~~~~~~~!
'Wargame(Web) > Webhacking.kr Writeup' 카테고리의 다른 글
Webhacking Writeup 15번 문제 (0) | 2022.07.06 |
---|---|
Webhacking Writeup 14번 문제 (0) | 2022.07.06 |
Webhacking Writeup 17번 문제 (0) | 2022.07.06 |
Webhacking Writeup 16번 문제 (0) | 2022.07.06 |
WebHacking Writeup 7번 문제 (0) | 2022.07.06 |