KISA 해킹 방어 훈련장 문제에 대한 풀이입니다. 


Web Level1 문제를 보면 아래와 같습니다. 



제목 : 이것은 무엇에 쓰이는 것인고 ?


설명 : 해당 웹 사이트에 접속하여 사이트에 숨겨져 

있는 값을 찾아 인증키를 추출해 보아라~ 



문제 풀기를 클릭하면 다음 사이트로 이동합니다. 




추천은 저를 춤추게 합니다 ^^



여기저기 둘러 봐도 딱히 볼만한게 없어 보이네요. 

뭔가 참고할 만한 내용이 있는지 각 페이지의 html소스를 살펴보다 보니 뭔가 수상한 내용이 보입니다. 


product_details.html파일 입니다. 



속성이 'hidden'으로 된 'authkey'라는 이름의 값이 보이는군요. 

딱 봐도 뭔가 난독화된 코드 같다는 느낌이 드네요. 


난독화된 코드를 풀어보기 위해 적당한 사이트를 구글링을 해서 찾아봅시다. 


저는 아래 사이트를 이용했습니다. 

http://htmlobfuscator.com/


value에 해당하는 내용을 복사한 다음 윗쪽 입력 창에 붙여넣고 'obfuscate'버튼을 눌러봅시다. 

원래는 난독화를 시키기 위한 기능 같은데.. 어쨌든 하단 창에 복호화된 코드 내용이 출력됩니다. 


이제 이 내용을 실행시켜보면 됩니다. 


실행 시키는 방법은 많겠지만.. 따로 파일을 만드는게 귀찮으시다면 저처럼 w3schools사이트를 잘 활용 하시면 됩니다. 


w3schools.com 사이트에 들어가셔서 아무 메뉴나 들어가 보면 'Try it yourself'라는 버튼이 보입니다. 

소스를 입력하고 실행시키면 결과 화면을 보여주는 기능입니다. 



아래와 같은 창이 뜨고 왼쪽편 입력 창에 디코드된 자바 스크립트 코드를 붙여넣고 'Submit Code' 버튼을 누르면..


짜잔~ 실행 결과가 팝업창으로 뜹니다. 


스포일러를 할 순 없으니 키 값은 지웠습니다. ^^ 


Posted by KT한
,

해킹을 배우는 사람의 입장에서 자세하게 풀이법을 정리하고자 합니다. 


WOWHACKER WEBGAME SEASON2  Level 6 풀이법입니다. 


링크: http://webgame.wowhacker.com/AnTsGam3/


주어진 링크를 따라 들어가봅시다. 



크롬(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'가 되는군요. 


이제 주소창에 구한 답을 가지고 링크를 아래와 같이 입력해봅시다. 



역시 정답 페이지가 나옵니다. 


스마트한 브라우저 덕분에 난독화된 자바스크립트 보는거 참 쉽죠? 굿잡


Posted by KT한
,