본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다.

해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다.

문제 내용

초기 화면에는 어떠한 것도 없고 값을 전송하는 것만 있다. 따라서, 소스를 열어서 무슨 기능인지 파악해야한다.

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

문제 풀이

ck()함수는 보면 ‘.kr’의 인덱스를 30번 곱한 값을 ul 변수에 넣고 form에 해당 값을 넣으면 어떠한 링크로 이동하는 것을 알 수 있다.

ul의 값이 540인 것을 [개발자 도구 - 콘솔]을 통해서 쉽게 구할 수 있다.

이 값을 넣어보겠습니다.

URL의 이동은 되었지만, 소스코드도 동일하고 다른 점이 없다.

location.href="?"+ul*pw.input_pwd.value; 이 부분을 잘 보면 ?이후 ul값과 우리가 입력한 값을 곱한 링크 즉, /js-1/?num과 같이 이동해야 할 텐데 input_pwd 변수가 붙어 있다.

ul의 값은 540이고, 우리가 입력한 값이 540이어야 해당 링크를 이동하는 것이였으므로 pw.input_pwd.value 값도 540일 것이다.

이 두 값을 곱하면 291600이 나오는데 input_pwd GET URL이 아닌 ?이후 291600을 넣어보면 풀린다.

어떠한 문제로 인해서 제대로 된 링크 연결이 안되었는지 확인해보고 있지만, 아직까진 찾질 못했다.