티스토리 뷰
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 |