WEB/webhacking.kr

[webhacking. kr] old-14

뇨롱 2020. 7. 31. 05:06

▷유형: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을 입력한다. 

문제해결이다.