No img


[Webhacking.kr] Challenge(old)- old-14

Posted by bonggang | 2020. 5. 31. 01:10

문제


https://webhacking.kr/challenge/js-1/

 

Challenge 14

 

webhacking.kr

 

문제 풀이


0. 소스코드 확인

<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>

 

버튼을 누르면 ck 함수가 실행되는 간단한 코드다.

그 외에 특별히 눈에 띄는 부분은 없다.

 

1. ck 함수 분석

 

if(ul==pw.input_pwd.value) { location.href="?"+ul*pw.input_pwd.value; }

 

이 함수에서 위의 구문이 문제 해결을 위한 문장으로 보인다.

이 문장을 보면 ul의 값과 pw.input_pwd.value 값이 일치하는 것이 조건이다.

 

위에서부터 차근차근 확인해보겠다.

ck 함수는 제일 먼저 ul 변수에 URL 값을 저장한 후 .kr의 인덱스 값을 다시 ul에 저장한다.

 

현재 URL: https://webhacking.kr/challenge/js-1/

 

이 URL에서 .kr은 0부터 시작해서 18에 위치해 있다. 즉, ul에 18을 저장한 것이다.

 

ul = ul*30 = 18*30 = 540

 

ul의 값을 구했으니 이제 입력 값에 540 값을 넣어주면 조건은 클리어되고 해당 문장이 실행된다.