1단계의 초기화면이다. 코드를 확인해보겠다. 어딘가를 클릭하면 'index.phps'로 페이지 이동을 한다. 개발자 도구를 이용하여 클릭해야 하는 부분이 어디인지 확인해보았다. 파란 블럭이 씌워진 --- index.phps --- 부분을 클릭하여야 한다. 클릭해보니 이러한 페이지로 이동한다. 이 코드로 부터 정답을 얻을 수 있을것이다. "user_lv"라는 이름의 쿠키가 없는 경우 인 쿠키를 만드는 부분이다. eregi()는 문자를 찾는 함수이다. eregi("찾을 문자", "문자열")에서 "찾을 문자"가 "문자열"에 포함되어 있는 경우 1을, 포함되어 있지 않는 경우 0을 리턴한다. if문이 총 3개가 있는데 1. "user_lv이라는 이름을 가진 쿠키 값에 0부터 9까지의 숫자 또는 마침표(.) 이외..
20번 문제에 들어가면 정보를 입력해서 제출하는 화면이 나타난다. 소스코드는 다음과 같다. 로 둘러쌓인 부분을 확인해보자 위의 소스코드를 보면 "Submit"버튼을 클릭했을때 ck()함수가 호출된다. ck()함수는 다음과 같은 작업을 한다. 1. 작성되지 않은 항목의 텍스트상자로 커서를 이동시키고 함수를 종료시킨다. 2. 모든 항목이 작성되었지만 code가 오른쪽 회색상자에 적혀있는 것과 다른경우 code의 텍스트 상자로 커서를 이동시키고 함수를 종료시킨다. 3. 1,2에 해당되지 않는 경우 입력한 내용들을 서버에 전송(제출)한다. nickname, comment항목을 모두 입력하고 code도 오른쪽 회색상자에 적혀있는 문장과 같게 입력해서 submit버튼을 클릭하였다. 하지만 Wrong이라는 텍스트가 ..
54번을 클릭하였을때의 화면이다. 시간이 좀 지나면 is뒤에 문자가 한글자씩 나오다가 ?가 나오고 더이상 변하지 않는다. 코드를 확인해 보겠다. XMLHttpRequest는 Ajax요청을 생성하고 전송할 수 있는 객체이다.Ajax(Asynchronous JavaScript and XML)란 자바스크립트를 이용해서 비동기적으로 서버와 브라우저가 통신하는 방식이다. run()함수에서 if(window.ActiveXObject)는 구버전의 IE일 경우 수행되고 else if(window.XMLHttpRequest)는 신버전의 IE(7이상) 또는 다른 웹브라우저(크롬 등) 일 경우 수행된다. 나는 크롬을 이용하였으므로 run()함수에서 XMLHttpRequest객체가 생성되고, 이 객체를 변수 x가 참조하게 되..
16번 문제를 클릭하면 큰별 하나와 작은별 하나가 보인다. 일단 소스코드를 확인하자 4번째 줄에 onkeypress=my(event.keyCode)라는 코드가 있다. onkeypress는 키보드에서 키를 눌렀을때 이벤트를 발생시키는 속성이다. 단, Shift나 Enter, 한/영 등은 인식하지 못한다. event.keyCode는 사용자의 입력키 값을 반환하는 코드이다. 함수 mv()에서는 event.keyCode값이 124일때 location.href=String.fromCharCode(cd)라는 분기문에 의하여어떤 새로운 페이지로 이동하는데, 이 코드를 자세히 살펴보자. location.href location.replace 기능 새로운 페이지로 이동된다. 기존 페이지를 새로운 페이지로 변경시킨다. 형..
14번 문제를 클릭했을떄 화면이다. 입력한 값을 체크하는 것 같은데, 정확히 모르겠으니까 소스코드를 확인한다. function ck()의 내부에서 정답을 확인할 수 있다.변수 ul에 저장되는 값인 document.URL은 현재 페이지의 URL을 의미한다.현재 페이지의 URL은 http://webhacking.kr/challenge/javascript/js1.html 이다. 그 후 ul=ul.indexOf(".kr")에서 ul의 값이 업데이트 되는데,indexOf(".kr")는 부분스트링 ".kr"이 처음 나타나는 위치를 반환하는 함수이다. 그 위치 값은 17이므로ul=ul*30에서 최종적인 ul의 값은 510이 된다. 따라서 510을 입력하면 Password is 510*17 이라는 메시지가 출력될 것이..
17단계를 클릭한 화면이다. 뭔가를 체크하는 것 같은데, 잘 모르겠으니까 소스코드를 확인해본다. 입력 값이 unlock과 같은 경우 Password is unlock/10 라는 메시지가 출력되고, 같지 않은 경우 Wrong이라는 메시지가 출력됨을 확인할 수 있다. 너무 긴 수식이므로 계산기로 계산하였다. unlock 값은 9997809307이다. unlock 값을 입력하니 예상했던대로 Password is 999780930.7 이라는 메시지가 출력되었다. 이 문제의 답은 999780930.7으로 보여진다. 999780930.7을 입력한 결과 17단계가 클리어 되었다.
15번 문제를 클릭하면 Access_Denied라는 대화상자가 출력되고 잠깐 어떤 페이지에 머물렀다가 처음으로 되돌아오게 된다. 잠깐 머무르는 페이지를 확인하기 위해 BurpLoader를 사용하였다. BurpLoader를 이용하면 Forward를 클릭할때까지 '어떤 페이지'에서 초기화면으로 복귀하지 못하도록 할 수 있다.이 페이지를 확인해보니 password is off_script라는 텍스트가 작성되어 있었다.off_script가 15번문제의 답인 것 같다. off_script를 입력하니 15단계가 클리어 되었다!!
webhacking.kr에 접속하면 나타나는 화면이다. 로그인 버튼은 있지만 회원 가입 버튼이 없다. 따라서 소스코드를 확인하였다. 페이지 소스코드에서 주석처리된 부분에 회원가입 페이지의 주소가 적혀있다. join/includ2_join__frm__0001.php?mode=6ca6dfd3d19a4c06d8cbb0f8d0c6f2d5 를 복사해서 webhacking.kr/ 뒤에 붙여넣기하면 회원가입 페이지로 이동할 수 있다. ID, PW, EMAIL은 원하는대로 작성하면 되지만 decode me 부분을 해결해야 한다. 즉, VGxScmRVMXFXWFZPZWtGMVRWUkJQUT09를 decode 하라는 이야기이다. 프로그래밍할때 다양한 인코드/디코드 기법이 사용된다. 대표적으로 UTF-8, 아스키 코드, B..