티스토리 뷰

 

여섯번째 글.

 

 

 

 

문제

이렇게 덩그러니 javscript challenge라고만 써져있다.

 

 

 

ㅇㅅㅇ

페이지 소스보기를 통해서 보면 이렇게 스크립트 부분이 알수없는 표정으로 난독화가 되어있다.

구글링 결과 'AAencode'라는 방식이 사용되었다.

 

복호화 사이트 :  https://cat-in-136.github.io/2010/12/aadecode-decode-encoded-as-aaencode.html 

아니면 스크립트 맨 마지막 부분에서 ('_'); 이 표정을 지워주면 난독화가 풀린다.

 

 

 

(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";
}
})

 

크롬개발자도구를 통해 콘솔에서 ('_'); 을 지워줬더니 위처럼 정상적으로 스크립트가 출력되었다.

ck가 어떤 특정 문자열이면 ~.php통해 문제가 풀리는 것 같다.

* 참고로 fromCharCode(i,0)에서 0을 인자값으로 주면 null이 된다 따라서 출력될 때 '문자 (공백)'이 출력될 것이다.

 

<사용된 함수>

substr(start,end) : start위치부터 end 이전까지 문자열 반환

indexOf(index) : index를 검색하고 위치를 출력

String.fromCharCode(num) : UTF-16 코드 유닛의 시퀀스로부터 문자열을 생성해 반환 / 유효성 검사 따로 x

String.charCodeAt(index) : index에 해당하는 문자의 유니코드값을 반환

 

 

 

 

이렇게 필요한 부분만 console창에서 입력하여 ck 값을 확인 할 수 있었다.

이제 조건문에 해당하는 내용을 나타내보면

 

https://webhacking.kr/challenge/code-3/youaregod~~~~~~~!.php 이 될것이다. 

 

 

 

 

이미 풀었어요!

'writeup > webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] 33번 문제(old)  (0) 2020.08.07
[Webhacking.kr] 32번 문제(old)  (0) 2020.08.06
[Webhacking.kr] 22번 문제(old)  (0) 2020.08.05
[Webhacking.kr] 21번 문제(old)  (0) 2020.08.04
[Webhacking.kr] 19번 문제(old)  (0) 2020.07.30