[webhacking.kr] 문제풀이 No.14

[ webhacking.kr 사이트의 문제에 대한 풀이입니다. ]

앞선 문제중 6번에 대한 풀이에 문제가 생겨서 우선 14번부터 올린다.

[ 풀이 ]

우선 문제화면을 살펴보자. 특이점 없이 굉장히 평범하다.

아무값이나 넣고 버튼을 눌러보면 wrong이라는 알림이 뜬다.
아마 답에 맞는 값을 입력해야 풀리는 문제 같다.

가장 먼저 개발자 도구를 켜서 분석코드에 대한 분석을 해보자.

{ Solution } console로 함수 실행

이번 문제는 코드 구조가 상당히 간단하다.

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

우선 html 코드는 form에 대한 코드 뿐이다.
onclick, 즉 클릭 시에 하단의 js 코드의 ch() 함수를 실행한다.

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"); }
}

이 코드를 간단하게 분석해보자면,
(1) ul 을 정의 할 때 현재 페이지의 주소를 갖고 온다.
(2) ul 값을 ul 중에서 .kr 의 인덱스 값을 불러온다.
(3) ul 값에 30을 곱한 값을 지정해준다.
(4) form 에서 입력 받은 값을 ul 과 비교하여 맞다면 주소를 ?ul*pw.input_pwd.value로 이동시킨다.

해당 코드에 대해서는 고민할 필요 없이 console 창으로 넘어가 코드를 변형시킨 후, ul*pw.input_pwd.value 의 값을 구해보자

여기서 코드를 간결하게 하기 위해서 조금만 생각해보자면, ul*pw.input_pwd.value의 값은 결국 ulpw.input_pwd.value의 값이 같을 때 계산되기 때문에 ul의 제곱값 을 구하면 된다.

function ck(){
  var ul=document.URL;
  ul=ul.indexOf(".kr");
  ul=ul*30;
  console.log(ul**2);
}
ck();

콘솔에 넣고 실행 시키면 결과 값이 291600 이 나온다.
그럼 웹페이지 주소를 다음과 같이 수정하면 문제가 해결된다.

마무리하며...

이번 문제는 비교적 어렵지 않은 난이도에 속했다. 현재 작성중인 글은 모두 5~10점 수준의 문제이니 어렵지 않게 해결 가능하다.
다음 문제는 15번이다. 15번도 재미있는 문제이니 기대해도 좋다.

좋은 웹페이지 즐겨찾기