old-12_풀이

2021. 6. 10. 19:15문제연습/webhacking.kr

반응형

본 티스토리 블로그는 PC 환경에 최적화되어 있습니다.

모바일 유저분들은 아래 네이버 블로그를 이용해 주세요.

 

 

old-12_풀이

본 네이버 블로그는 모바일 환경에 최적화되어 있습니다. PC 유저분들은 아래 티스토리 블로그를 이용해 ...

blog.naver.com

 

 

Webhacking.kr

old-12번 문제풀이

이번 문제는 웹 소스코드 난독화 기법을 다룬 문제였습니다.

여러 가지 난독화 기법이 존재하지만 이 문제에서 다룬 난독화 기법은 상당히 재밌는 방식인 것 같습니다.

그럼 오늘의 문제 한번 열어보겠습니다.

 

 

1. 접속 화면

자바스크립트 도전이라는 영어 문구가 화면에 표시되어 있습니다.

해당 웹 소스코드를 확인하면 다음과 같이 이상한 코드가 들어가 있음을 알 수 있습니다.

 

해당 코드를 잘 보시면 <script></script>태그로 둘러져 있습니다.

즉, 위 부분이 자바 스크립트 코드인 것인데 약간의 일본어? 와 이모티콘들로 가득 채워져 있어 제대로 된 코드 해석을 시도할 수 없습니다.

 

 

2. 코드 분석

구글로 자바 스크립트 난독화와 일본어, 이모티콘과 관련된 키워드를 찾던 중

아래 블로그에 다음과 같은 난독화 방식을 찾았습니다.

 

 

자바스크립트 난독화[Javascript Obfuscation] 개념과 서비스 웹 페이지

 자바스크립트 난독화(Javascript Obfuscation)란? 자바스크립트는 클라이언트(Client)에서 실행되도록 하는 언어입니다. 따라서 사용자(Client)가 웹사이트에 접근하게 되면 해당 스크립트를 그대로 볼

kkamikoon.tistory.com

 

 

위 블로그 글 중 중간에 aaencode라는 스크립트 난독화 기법이 나옵니다.

aaencode 기법을 복호화 할 수 있는 방법을 구글에 검색해 보니 아래 링크에 해당 난독화된 스크립트를 넣으면

복호화 된 코드를 보여주는 사이트가 존재했습니다.

 

 

aadecode - Decode encoded-as-aaencode JavaScript program. ['_']

aadecode - Decode encoded-as-aaencode JavaScript program. (゚Д゚) ['_'] Enter ...

cat-in-136.github.io

 

 

위 문제에서 제시된 난독화 코드를 넣으니 다음과 같은 스크립트 코드가 나왔습니다.

 

복호화된 자바 스크립트 코드

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

 

 

위 코드에서 enco_(x) 함수는 x 값에 해당하는 유니코드 문자를 반환하는 역할을 하는데,

ck에 저장된 문자열이 특정 조건이 맞을 경우 특정 링크로 이동하는 것으로 보입니다.

해당 조건문을 만족시키기 위한 문자열을 찾기 위해 크롬 개발 콘솔을 이용하였습니다.

 

 

즉, 문제 링크 뒤에다가 다음과 같이 입력하고 접속하면 해당 문제가 풀리는 것을 확인할 수 있습니다.

"youaregod~~~~~~!.php"

 

이번 문제는 난독화 기법이 이미 알려진 경우여서 쉽게 접근이 가능했습니다.

만약, 어떤 난독화 기법을 사용하였는지 확인할 수 없다면 디버거와 코드 빈도수를 이용해

구문을 추측하는 방법밖에 없을 것 같습니다...

 

이상 문제풀이를 마치도록 하겠습니다!!!

 

반응형

'문제연습 > webhacking.kr' 카테고리의 다른 글

old-19_풀이  (0) 2021.06.22
old-21_풀이  (0) 2021.06.12
old-24_풀이  (0) 2021.06.06
old-38_풀이  (0) 2021.06.06
oid-32_풀이  (0) 2021.06.05