Web Hacking/webhacking.kr 풀이

old-24 write-up

박연준 2024. 1. 10. 02:12

문제 정보

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

 

Challenge 14

 

webhacking.kr

 

풀이

 

문제에 접속하면 전에 있던 문제와 같이 입력 폼과 check 버튼이 보인다.

 

똑같이 소스 코드를 보면 다음과 같다.

<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 onsubmit="ck();return false"><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"); }
  return false;
}
</script>
</body>
</html>

 

 

이를 분석해보면 먼저 폼의 이름은 pw이고 제출을 했을 때 ck함수를 실행하고 false를 반환한다. 다음 입력으로 input_pwd이름의 문자열을 받아 check를 클릭하면 ck 함수를 실행하도록 되어있다.

 

ck 함수를 분석하면 ul이라는 변수는 document.URL이고, 다음으로 ul 변수에 indexOf 함수로 .kr의 위치를 찾고 있으며, 이는 .의 위치만 찾으면 된다. 사이트의 이름은 webhacking.kr이므로 .은 10이다. 이를 30을 곱하면 300이다.

 

 

이를 입력폼에 넣고 check 버튼을 눌렀는데 Wrong이 나왔다.

 

w부터 세는게 아닌 https가 있는 스킴부터 다시 차례대로 읽어보면 .의 위치는 18이고 이를 30과 곱하면 540이다. 이를 다시 입력폼에 입력하고 check 버튼을 누르면 해결된다.

'Web Hacking > webhacking.kr 풀이' 카테고리의 다른 글

old39 write-up  (0) 2024.01.10
old-38 write-up  (0) 2024.01.10
old-16 write-up  (0) 2024.01.10
old-17 write-up  (0) 2024.01.10
old-18 write-up  (0) 2024.01.10