개념
: 자바스크립트, 개발자 도구 콘솔
풀이
old-17번 문제를 클릭하면
14번 문제와 비슷하게 입력창과 버튼이 있었다.
입력창에 아무 값이나 입력해서 check 버튼을 눌렀더니
Wrong이라는 메시지를 담고 있는 alert창이 떴다.
14번 문제와 동일하게 문제에서 원하는 답을 입력창에 입력한 후, check 버튼을 누르면 문제가 해결될 거 같다.
개발자 도구[F12]를 이용해서 소스코드를 살펴보자.
빨간색 네모 박스를 살펴보면 check 버튼을 누르면 sub 함수가 실행된다.
sub 함수를 통해 문제가 해결되는 느낌이다.
소스 코드 안에 있는 script 태그를 자세히 살펴보면,
소스코드 분석
unlock=100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7
-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+1/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50
-9*8+7-6+5-4*3-2*1*10+100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10-100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10
-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10
*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1
*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+100/10-10+10+50-9*8+7-6
+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50
-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10
-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10+9999999;
function sub() {
if(login.pw.value==unlock) { =
location.href="?"+unlock/10;
}
else {
alert("Wrong");
}
}
첫 번째 줄에 unlock이 초기화와 동시에 선언되어 있고, 그 아래에 sub 함수가 있다.
sub 함수를 자세히 살펴보자!
if(login.pw.value==unlock) {
location.href="?"+unlock/10;
}
login.pw.value가 unlock과 같다면 즉, 입력창에 입력한 값과 unlock의 값이 같으면, 현재 페이지에서 다른 페이지(?+unlock/10)로 이동한다. 이 부분을 해결하면 문제가 풀릴 느낌이다.
else {
alert("Wrong");
}
서로 같지 않으면 Wrong이라는 메시지가 쓰여있는 alert 창을 내보낸다.
문제를 해결하기 위해서 login.pw.value와 unlock을 같게 만들어줘야 되는데, unlock 값만 알면 문제가 해결된다. sub 함수 위에 보면 unlock이 선언되어 있는데, unlock이 어떠한 수로 정의되어 있는 것이 아니라 피연산자들과 연산자들을 다 계산해줘야 된다.
계산기로 하나하나 계산해서 unlock 값을 얻는 방법도 있겠지만 개발자 도구[F12]의 콘솔(console)을 이용하면 빠르게 계산할 수 있다.
unlock을 복사해서 console 창에 붙여넣어준 후 Enter을 누르면
바로 unlock 값이 뜬다.
unlock 값을 입력창에 입력해준 후, check 버튼을 누르면
예상과 같이 문제가 풀렸다.
저는 이미 풀었던 문제라, already solved 라고 뜨네요 :)
저의 주관적인 생각이 담긴 글입니다.
이 글을 보신 분들에게 도움이 되고자 글을 썼지만 부족한 부분이 많을 수 있습니다.
그 점 양해 부탁드리며, 추가했으면 하는 부분이나 잘못된 부분은 댓글로 알려주시면 감사하겠습니다!
'보안 > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge(old) old-14 풀이 (0) | 2020.11.26 |
---|---|
[Webhacking.kr] Challenge(old) old-15 풀이 (0) | 2020.11.26 |
댓글