Wargame/Webhacking.kr
[Webhacking.kr] old-14
핏디
2021. 7. 22. 00:19
SMALL
[문제]
[풀이]
구글 개발자 환경에서 소스코드를 확인할 수 있었다.
그 중 script 태그 사이의 ck 함수에서 문제 해결을 위한 힌트를 얻을 수 있다.
function ck(){
var ul=document.URL;
ul=ul.indexOf(".kr");
ul=ul*30;
if(ul==pw.input_pwd.value) { location.href="?"+ul*pw.input_pwd.value; }
else { alert("Wrong"); }
}
document.URL은 문서의 URL을 반환해주는 역할(window.location.href으로도 사용할 수 있음)을 하고, indexOf( ) 함수는 자바스크립트에서 특정 문자의 위치를 검색해주는 역할을 한다.
ul 변수를 정리해보면, 현재 페이지의 url을 가져와서 .kr이 위치한 곳의 index를 구한 후, 그 값에 30만큼 곱한 값을 저장하게 된다.
이 값을 비교해 문제 풀이 성공 여부를 결정하게 되므로 .kr의 index 값만 찾으면 쉽게 구할 수 있다.
현재 페이지 url은 https://webhacking.kr/challenge/js-1/ 이므로 .kr이 있는 곳을 살펴보면 18번째부터 시작되는 것을 알 수 있다.(index는 0부터 계산)
따라서 18 *30 = 540 임을 알 수 있고, ul 의 값이 540이 되어야 하는 것을 알 수 있다.
문제 풀이 후 url을 확인해보면 끝자리가 291600으로 변경된 것을 볼 수 있고, 이는 540*540을 계산한 결과이다.
https://webhacking.kr/challenge/js-1/?291600
[핵심]
indexOf() 함수
string.indexOf(searchvalue, position)
- indexOf 함수: 문자열(string)에서 특정 문자열(searchvalue)을 찾고, 검색된 문자열이 '첫번째'로 나타나는 위치 index 리턴.
- 파라미터
- searchvalue : 필수 입력값, 찾을 문자열
- position : optional, 기본값은 0, string에서 searchvalue를 찾기 시작할 위치
- 찾는 문자열이 없으면 -1 리턴.
- 문자열을 찾을 때 대소문자 구분.
[출처]
https://hianna.tistory.com/379 [어제 오늘 내일]
LIST