WEBHACKING.KR 17번 문제 풀이
[ 콘솔계산기 ]
오늘은 webhacking.kr의 17번 문제를 풀어보자.
사이트에 들어가면 다음과 같은 화면이 반겨줄것이다.
우리는 무의식적으로 아무거나 치고 check를 눌러볼것이다.
(이게 사람 본능이거든)
하지만 다음과 같은 메시지를 출력하며 튕깁니다.
그럼 이제 이 사이트를 뜯어보자.
사이트 소스보기를 하면 다음과 같이 이루어져 있다.
<html>
<head>
<title>Challenge 17</title>
</head>
<body bgcolor=black>
<font color=red size=10></font>
<p>
<form name=login>
<input type=passwd name=pw><input type=button onclick=sub() value="check">
</form>
<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+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*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10+9999999999;
function sub(){ if(login.pw.value==unlock){ alert("Password is "+unlock/10); }else { alert("Wrong"); }}
</script>
이제 이 코드의 필수적인 부분만 분석해보자.
<input type=passwd name=pw><input type=button onclick=sub() value="check">
폼에서 입력값을 sub()라는 javascript 함수에 넣어준다.
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+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*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10+9999999999;
Javascript에 unlock값을 위 수식 계산값으로 정해준다.
function sub(){ if(login.pw.value==unlock){ alert("Password is "+unlock/10); }else { alert("Wrong"); }}
만약, 입력값이 unlock변수의 값과 일치한다면 입력된 값의 10 나눈 값을 비밀번호로 알려주고, 만약 아닐 경우에는 Wrong을 띄워준다.
코드를 분석해 보았으니 이제 값을 알아보자.
unlock 변수의 값을 알아보자.
위의 계산의 결과가 unlock 변수의 값이 되는데, 이를 직접 계산하기는 귀찮으니 개발자 도구의 콘솔 기능을 이용하도록 하자.
이렇게 unlock값이 9997809307임을 알게 되었으니 해당 폼에 넣어주자.
이제 check버튼을 눌러주면 위에서 분석했던것과 같이 10 나눠진 값이 나온다.
이제 저게 플래그니 등록하면 된다.
WEBHACKING.KR 17번 문제 클리어!
'보안공부 > Webhacking.kr 풀이' 카테고리의 다른 글
webhacking.kr 24번 문제 풀이 - FILTERED LOCALHOST (0) | 2018.07.17 |
---|---|
webhacking.kr 18번 문제 풀이 - SQL주사기 (0) | 2018.07.17 |
webhacking.kr 14번 문제 풀이 - indexOf (0) | 2018.07.09 |
webhacking.kr 6번 문제 풀이 - 감싸고바꾸고 (0) | 2018.07.07 |
webhacking.kr 15번 문제 풀이 - 이걸못풂? (0) | 2018.07.06 |