Webhacking

[Webhacking.kr] old-17번 풀이

aeeazip 2022. 12. 21. 02:43

링크로 들어가면 17번 문제를 확인할 수 있다.

문제 사진

문제만 보면 전혀 모르겠다 ^^

 

 

 

 

 

 

소스코드


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

패스워드를 입력하고 check 버튼을 클릭하면 sub함수가 호출되는 구조이다.

핵심은 script 내용이다.

긴 unlock값이 있고 밑에 sub함수가 정의되어 있는데

 

function sub(){ 
	if(login.pw.value==unlock) { 
		location.href="?"+unlock/10; 
	} else { 
		alert("Wrong"); 
    }
}

입력한 패스워드 값 = unlock

현재주소+?unlock/10으로 이동

패스워드 값으로 unlock값을 입력하면 원하는 주소로 이동할 수 있고 문제가 풀린다.

unlock값을 알아야 한다.

 

 

 

 

 

 

 

해결


[F12] → [Console]로 들어간다.

콘솔창에 unlock의 수식을 입력한다.

콘솔창

 

콘솔창에 입력해서 unlock=7809297.1 임을 알았다.

이제 패스워드로 7809297.1를 입력하면 문제가 풀린다!

결과

javascript는 클라이언트 쪽에서 처리하는 언어이기 때문에 사용자가 소스 코드 확인 및 수정 가능

→ 보안에 취약한 언어

 

해당 문제는 자바스크립트의 보안 취약점을 이용한 문제이다.

얻쉬 오늘 공부 끝