처음에 보자마자 SQL Injection이라고 생각해서 여러 입력값을 줬는데 아무 반응이 없어서 페이지 소스를 확인해 보니 chk_form()이라는 함수를 확인할 수 있었다.

 

<script>
	function chk_form(){
		var id = document.web02.id.value ;
		var pw = document.web02.pw.value ;
		if ( id == pw )
		{
			alert("You can't join! Try again");
			document.web02.id.focus();
			document.web02.id.value = "";
			document.web02.pw.value = "";
		}
		else
		{
			document.web02.submit();
		}
	}
</script>
<!-- Hint : Join / id = pw -->
<!-- M@de by 2theT0P -->

 

chk_form()은 자바스크립트로 쓰여졌고 입력한 id랑 pw를 가져와서 두 값이 달라야지만 해당 폼이 제출이 되는 함수이다.

아래에 있는 힌트를 확인해보니까 id와 pw가 같아야 된다고 되어 있다. submit이 되기 위해서는 두 값이 달라야 하는데 같아야지만 풀린다고 되어있어서 id와 pw를 다르게 입력한 뒤 프록시툴로 중간에 id와 pw를 같은 값으로 바꿔주니까 정답을 알 수 있었다.

 

 

이 방법 말고도 간단하게 개발자 도구에서 코드를 고쳐도 풀 수 있다.

 

console창에서 이런식으로 수정 후 id와 pw에 같은 값을 집어넣으면 AuthKey를 알 수 있다.

'forensic > suninatas.com' 카테고리의 다른 글

[suninatas] Level 6  (0) 2021.09.06
[suninatas] Level 5  (0) 2021.09.06
[suninatas] Level 4  (0) 2021.09.06
[suninatas] Level 3  (0) 2021.09.06
[suninatas] Level 1  (0) 2021.09.05

 

<% %>는 스크립툴릿 태그이고 함수를 보면 ASP 언어라는 것을 알 수 있다.

 

코드를 간단하게 확인해보면 사용자가 입력한 str을 읽어서 빈 문자열이 아니라면

1. 'a'를 'aad', 'i'를 'in'으로 변경한다.

2. result1에 2-3번째 문자, result2에 4-9번째 문자를 넣고 두 문자열을 합친다.

3. 합친 문자열이 'admin'이라면 패스워드가 출력된다.

 

역을 계산해보면 'ami'이 답이라는 것을 알 수 있다.

ami -> aadmi -> aadmin -> result1=ad, result2=min -> admin

 

여기서 ASP 문법을 잘 몰라서 &가 비트연산자인줄 알고 좀 헷갈리기도 했고 MID 함수에서 0부터 카운트가 되는 것이 아니라 1부터 카운트가 되는 것을 놓쳐서 확인을 하고 다시 풀었다.

'forensic > suninatas.com' 카테고리의 다른 글

[suninatas] Level 6  (0) 2021.09.06
[suninatas] Level 5  (0) 2021.09.06
[suninatas] Level 4  (0) 2021.09.06
[suninatas] Level 3  (0) 2021.09.06
[suninatas] Level 2  (0) 2021.09.06

+ Recent posts