티스토리 뷰

Wargame/Webhacking.kr

Challenge 14

do9dark 2015. 7. 7. 15:04


input form과 check button에 값을 입력하면 Wrong! 이라는 메시지창이 표시된다.

소스를 보면 아래와 같이 되어 있다.



먼저 text를 입력할 수 있는 input form이 주어지고 그것을 check하는 button이 있는데, button이 동작하는 onclick을 보면 ck() 함수가 사용된 것을 볼 수가 있다. 

여기에서 function ck()를 살펴보면 앞에서 어떻게해서 “wrong!” 생성되었는 지 알 수 있고 password가 무엇인지 알아낼 수도 있다.

17번째 줄에 if문에서 ul과 pw.input_pwd.value가 같으면 password를 알려주고, 아닐 경우 “wrong!” 메시지를 생성한다.

그렇기 때문에 ul의 값을 알아내기 위해서는 함수의 시작부분인 13번째 줄을 보면 변수 ul은 document.URL로 되어 있다.

ul = http://webhacking.kr/challenge/javascript/js1.html

그리고 15번째 줄에서 ul 은 ul.indexOf(“.kr”); 로 되어 있다.


indexOf(String.indexOf method)는 

public indexOf(value:String, [startIndex:Number]) : Number

로 문자열을 검색하여 value:String이 최초로 발견된 위치 또는 호출 문자열 내의 startIndex:Number 다음 위치부터 검색하여 value:String이 발견된 위치를 반환한다.

이 인덱스는 0부터 시작하므로 문자열의 첫번째 문자는 인덱스는 1이 아니라 0이고 발견되지 않을 경우 -1을 반환한다.

 

ul = http://webhacking.kr/challenge/javascript/js1.html

여기에서 .kr(value) String을 검색하면 h가 0 .kr 은 17에 위치하기 때문에 17을 반환한다.

마지막으로 16번째 줄에 ul 은 ul * 30 이므로 17 * 30 = 510 이다.


따라서, 510을 입력하면 ul == pw.input_pwd.value 가 참이기 때문에 

“password is “+ul * pw.input_pwd.value 를 연산하여 메시지를 출력한다. 



510을 입력하지 않더라도 소스를 통해서 ul * pw.input_pwd.value 이기 때문에 260100(= 510 * 510)을 인증하면 문제를 풀 수 있다.


'Wargame > Webhacking.kr' 카테고리의 다른 글

Challenge 19  (0) 2015.07.08
Challenge 18  (0) 2015.07.07
Challenge 17  (0) 2015.07.07
Challenge 16  (0) 2015.07.07
Challenge 15  (0) 2015.07.07
Challenge 13  (0) 2015.07.06
Challenge 12  (0) 2015.07.06
Challenge 11  (0) 2015.07.06
Challenge 10  (0) 2015.07.06
Challenge 9  (0) 2015.07.05
댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
링크
공지사항
Total
Today
Yesterday