[해킹/문제풀이] 자바스크립트 난독화 (Javascript Obfuscation) 된 코드 복호화 - WOWHACKER level6
IT 생활/해킹 2013. 6. 7. 10:04해킹을 배우는 사람의 입장에서 자세하게 풀이법을 정리하고자 합니다.
WOWHACKER WEBGAME SEASON2 Level 6 풀이법입니다.
주어진 링크를 따라 들어가봅시다.
크롬(chrome)으로 들어가면 달팽이 이미지가 보이고, 'Target Point' 에 매우 큰 숫자가 보입니다.
그리고 저절로 숫자가 올라가면서 'Target Point' 뒤에 글자가 바뀌는군요.
그런데 무슨 의도인지 알기가 애매합니다.
혹시 모르니 익스플로러(Explorer)로 들어가봅시다.
아..마우스로 개미를 클릭 할 때마다 숫자가 올라가는 개미 잡기 게임이였군요.
자! 단계별로 차근 차근 풀어봅시다.
1단계: 자바스크립트 내용 보기
화면에서 마우스 우 클릭 후 'View Page Source'를 선택합니다.
소스를 보면 매우 긴 자바 스크립트가 보이게 되죠.
<script language=javascript>document.write(unescape('%3C%73%63%72%69%70%74%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%66%75%6E%63%74%69%6F%6E%20%64%46%28%73%29%
.. 중략 ..
%2636372C%2636372F%2636372C2%2638%263%3A%264D0tdsjqu%264F1')</script>
그런데 내용은 매우 길지만 난독화가 되어 있어서 도무지 알아볼 수가 없네요.
2단계: 난독화된 코드 복호화 하기 - 크롬
크롬은 기본적으로 자바스크립트 난독화 코드에 대해 복호화 해주는 기능을 제공해줍니다.
'F12'키를 눌러 봅시다.
화면 하단부에 html 소스가 보입니다.
'<html>'의 '<head>'에 자바스크립트가 나와있는게 보입니다.
자바스크립트에서 'Target Point'인 '4294967296'를 검색해봅시다.
point별로 화면에 보이던 문자가 보이는걸 보니 우리가 찾던 소스인것 같네요.
그리고, point가 'Target Point'보다 클 경우에 대한 내용도 나와 있습니다.
2단계: 난독화된 코드 복호화 하기 - 파이어폭스(Firefox)
파이어폭스에서는 마우스 우 클릭 후 'Inspect Element(Q)'를 선택하면 됩니다.
역시나 하단부에 스크립트 내용이 보이게 되고 크롬브라우저와 동일하게 point를 계산하는 코드를 찾아보시면 됩니다.
3단계: 정답 페이지 찾기 - 크롬
위에 코드를 보니 point 값을 넣어주는 부분이 보이는 군요.
var point = document.wow.WoWPoInT.value;
크롬의 훌륭한(?) 기능을 활용해서 이 값을 변경해 봅시다.
브라우저의 주소 입력창에 아래와 같이 입력해봅시다.
javascript: document.wow.WoWPoInT.value=4294967296
앞에 'javascript:'를 붙여서 자바스크립트의 특정 값을 지정해줄 수 있는 기능입니다.
잠시후..
다른 페이지로 이동되면서 화면에 답이 똭~! 나오네요.
3단계: 정답 페이지 찾기 - 파이어폭스
문제의 코드를 자세하게 살펴 봅시다.
if (point >= 4294967296) {
var o = "";
o += document.b.a.value;
o += document.e.a.value;
o += document.c.a.value;
o += document.a.a.value;
o += document.d.a.value;
document.wow.MSG.value = "Bingo!";
location.href="wOwLevel6.php?msg=" + o + "!";
}
point가 목표 수치에 도달하면 'o'라는 변수에 a,b,c,d,e 각각의 'a.value'를 붙이도록 되어 있군요.
그리고 나선 'location.href'로 링크를 현재 페이지의 뒷 부분을 지정해주도록 해줬네요.
그럼, a,b,c,d,e라는 변수에 어떤 값이 들어있는지를 찾으면 되는 거네요.
자, 자바스크립트를 보여주는 화면의 끝으로 이동해봅시다.
<form name="a"> 가 보이고.. 값이 "Crazy"라고 나오는군요.
그 아래로 b,c,d,e가 모두 보입니다.
위에서 봤던 코드에서 b,e,c,a,d 순서로 문자를 더했으니 우리도 그 순서대로 더해봅시다.
'IdontLikeCrazyCow'가 되는군요.
이제 주소창에 구한 답을 가지고 링크를 아래와 같이 입력해봅시다.
역시 정답 페이지가 나옵니다.
스마트한 브라우저 덕분에 난독화된 자바스크립트 보는거 참 쉽죠?
'IT 생활 > 해킹' 카테고리의 다른 글
[해킹/문제풀이] Blind SQL Injection 공격으로 DB 정보 알아내기 - WOWHACKER level 9 (0) | 2013.07.05 |
---|---|
[해킹/문제풀이] MySQL Injection 공격으로 DB 정보 알아내기 - WOWHACKER level7 (6) | 2013.06.14 |
[해킹/문제풀이] Method 변경을 통한 HTTP 인증 우회 - WOWHACKER level5 (2) | 2013.06.05 |
[해킹/문제풀이] 세션키 바꿔치기를 통한 관리자 세션 접속 - WOWHACKER level4 (3) | 2013.06.04 |
[해킹/문제풀이] MD5 해쉬를 통한 첨부파일 경로 찾기 - WOWHACKER level3 (0) | 2013.05.31 |