Security/Web
[Webhacking.kr] Challenge(old)- old-14
bonggang
2020. 5. 31. 01:10
문제
https://webhacking.kr/challenge/js-1/
문제 풀이
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 값을 넣어주면 조건은 클리어되고 해당 문장이 실행된다.