본문 바로가기
CTF/SuNiNaTaS

[CTF] SuNiNaTaS(써니나타스) 5번 Write-Up | Web

by spareone 2022. 10. 2.

 써니나타스 5번 문제풀이 Write Up 입니다.

[그림 1] Level 5 페이지

 문제에 접속하면 Check Key Value라는 문장과 함께 텍스트박스가 하나 있습니다.

아무 문자를 입력하고 Check 버튼을 눌러도 별 반응이 없습니다.

[그림 2] 페이지 소스코드

 F12를 눌러 개발자도구를 열어보면, 다음과 같은 힌트가 있습니다.

[그림 3] 힌트를 그대로 입력하는 모습

 해당 힌트를 입력해도 별 차이는 없습니다.

[그림 4] 코드 속에서 발견된 Script

 페이지 소스코드를 더 뜯어보면, 다음과 같은 script를 발견할 수 있습니다.

다만 해당 script는 난독화가 되어 있어 읽기 어렵습니다. 따라서 난독화를 풀어주는 툴을 이용해 보도록 하겠습니다.

[그림 5] 난독화 해제 사이트

 난독화를 해제하는 사이트는 여러 가지가 있는데, 이 글에서는 http://dean.edwards.name/unpacker/ 사이트에서 난독화를 해제했습니다.

코드가 좀 더러운데, 정리하면 다음과 같습니다.

var digitArray=new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
function PASS(n){
	var result='';
	var start=true;
	for(var i=32;i>0;){
		i-=4;
		var digit=(n>>i)&0xf;
		if(!start||digit!=0){
			start=false;
			result+=digitArray[digit]
		}
	}
return(result==''?'0':result)
}

이렇게 나오는데, 이 함수의 매개변수에 힌트를 넣어서 함수를 호출해 보겠습니다.

[그림 6] PASS() 함수 호출

 Console에 PASS()를 호출하면 바로 값이 나옵니다.

해당 값을 텍스트박스에 넣고 Check 버튼을 누르면 flag가 나옵니다.

댓글