문제 페이지는 해당 페이지와 같다.
헤당 페이지에는 javascript challenge 라는 문구만 존재한다.
페이지의 소스 코드를 확인한다.
스크립트 부분이 이모티콘으로 되있어서 해석할 수가 없다.
이러한 난독화 기법을 AAEncode 기법이라고 하며, javascript 구문을 이모티콘으로 인코딩 하는 방법이다.
개발자 도구의 Console 기능을 이용하여 디코딩 한다.
해당 스크립트의 마지막에 ('_'); 를 제거하고 Console 창에 입력한다.
하단과 같은 코드로 해석되는 것을 확인 할 수 있다.
(function anonymous(
) {
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);
}
function enco_(x){
return enco.charCodeAt(x);
}
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)){
location.href="./"+ck.replace("=","")+".php";
}
})
if 문 의 조건이 만족하여 조건문이 실행되면 php 파일로 이동하여 문제가 풀린다는 것을 알 수 있다.
조건이 만족하는 ck 값을 알아내기 위하여 개발자 도구의 console 기능을 이용한다.
먼저 하단의 코드를 콘솔 창에 입력하여 변수를 설정한다.
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);
}
function enco_(x){
return enco.charCodeAt(x);
}
그리고 if 조건문에 ck가 만족해야 하는 값을 입력한다.
ck 값이 "=youaregod~~~~~~~!" 이 되어야 함을 알 수 있다.
location.href="./"+ck.replace("=","")+".php";
ck.replace() 함수처럼 ck 의 값의 "=" 를 제거한다.
그리고 뒤에 .php 파일을 붙여 해당 페이지의 URL 뒤에 입력하여 youaregod~~~~~~~!.php 파일로 이동한다.
URL 을 상단과 같이 입력한 후 이동하면 문제가 풀리는 것을 알 수 있다.
'프로젝트 > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge(old) 18번 문제 (0) | 2021.07.06 |
---|---|
[Webhacking.kr] Challenge(old) 17번 문제 (0) | 2021.07.06 |
[Webhacking.kr] Challenge(old) 11번 문제 (0) | 2021.07.06 |
[Webhacking.kr] Challenge(old) 10번 문제 (0) | 2021.07.06 |
[Webhacking.kr] Challenge(old) 15번 문제 (0) | 2021.07.05 |