[webhacking. kr] old-14
▷유형:JAVA Script
▷문제:
값을 넣을 수 있는 네모칸이 있기 때문에 저 안에 true인 값을 넣어서 문제를 해결해야한다.
<페이지 소스>
<html>
<head>
<title>Challenge 14</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
</style>
</head>
<body>
<br><br>
<form name=pw><input type=text name=input_pwd><input type=button value="check" onclick=ck()></form>
<script>
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"); }
}
</script>
</body>
</html>
대강 살펴보면 네모칸으로 친 부분을 풀어야 문제가 pwned되는 것을 알 수 있다.
pw.input_pwd.value는 아까 빈칸에 입력되는 값이다.
위에서 부터 차례대로 살펴보자.
[14번에서 쓰인 문법과 용어]
∨ 함수
function 함수명() :함수 만들기
함수명(): 함수 호출
☆호출→ 선언 순서 상관xx
∨ .URL: 문서의 url을 가져옴(현주소)
▷ 형식: document.URL
∨ indexOf
: 함수의 위치값을 index로 반환
*없을 경우 -1
*찾을 문자가 문자열일 경우 시작위치
▷ 형식: "문자열".indextOf("찾을 문자")
∨ location.href
: 현재 페이지로 이동하거나 다른 페이지로 이동시켜줌
*인자값이 없으면 현재 페이지를 표시하고,
*다음에 인자값이 붙으면 그 페이지로 이동한다.
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"); }
}
①
var ul=document.URL;
ul이라는 변수에 문서의 url을 넣는다.
여기서는 페이지의 url을 말한다.
②
ul=ul.indexOf(".kr");
ul=ul*30;
ul에 .kr의 시작 인덱스를 넣고 30을 곱한다.
③
if(ul==pw.input_pwd.value) { location.href="?"+ul*pw.input_pwd.value; }
이 값이 문제페이지의 입력값과 같으면 문제 해결이다.
따라서 입력값은 ul에 저장된 숫자이다.
④
문제의 url은 https://webhacking.kr/challenge/js-1/이다.
여기서 .kr의 시작위치를 찾으니 18이다!
18*30=540이기 때문에 540을 입력한다.
⑤
문제해결이다.