1번부터 4번까지는 무난하게 풀어왔는데 5번에 '턱' 하고 막혔었다. 

이유는 문제를 보면서 얘기하시죠~

바로 문제풀이 시작하겠습니다.

 

1. 문제 

 


2. 문제풀이

 

키 값을 입력하여 올바른 키를 입력 시 문제가 해결될 것으로 보입니다.

단서가 아무것도 안보이기에

아무 입력 값(abcdefg)을 입력 후 요청 패킷을 잡아보았습니다.

 

password라는 파라미터에 들어가는 것을 보니 어떠한 비밀번호를 입력해야 한다는 것을 예상해봅니다.

 

응답 값을 확인했더니..

 

힌트가 나왔습니다. 힌트 이용을 위해 패스워드 파라미터에 넣어봤습니다.

 

하지만 응답 값 및 페이지 내 아무런 변화가 없는 걸로 보아 비밀번호가 아닌 것 같습니다...

 

스크립트 구문중 의심 가는 구문 분석이 필요해 보입니다.

 

스크립트 구문 내 코드를 보면 알아보기 힘든 구문으로 이루어져 있는 것을 볼 수 있습니다.

 

알아보기 힘든 구문으로 되어있는 것을 보고 난독화가 되어있을 것이라고 생각하여 난독화를 풀어보았습니다.

document.getElementsByClassName = function (a) {
var b = new Array();
var c = document.getElementsByTagName("*");
for (var i = 0; i < c.length; i++) {
if (c[i].className.indexOf(" ") >= 0) {
var d = c[i].className.split(" ");
for (var j = 0; j < d.length; j++) {
if (d[j] == a) {
b.push(c[i])
}
}
} else if (c[i].className == a) {
b.push(c[i])
}
}
return b
}

 

난독화를 풀어주는 사이트를 통해 풀어보았더니 코드가 이상하게 풀렸습니다;;.. 

 

응답 값 내 eval 함수 대신 document.write()함수를 이용하여 난독화를 풀어 보았습니다.

 

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)}                                                         

 

나온 코드를 보니

 

힌트에서 나온 12342046413275659 값을 넣어주면 PASS 값을 리턴해주는 것 같다.

 

패스워드 값을 입력하는 곳에 PASS(힌트 값)을 넣어 리턴 값을 받아 보았다.

 

 

9c43c20c 값이 나왔으며 체크해본 결과....

 

키값을 받았다.

 

이번 건 혼자 해결해보려고 하다가 너무 오랜 시간이 걸렸다;; 모를 땐 조금씩 도움을 받긴 해야겠다

문제풀이 끝~

 

*제 개인적인 문제풀이 방식이었으며, 잘못된 점이 있다면 알려주시면 감사하겠습니다.

'워게임 > suninatas' 카테고리의 다른 글

suninatas/웹/7번 문제풀이  (0) 2021.06.23
suninatas/웹/6번 문제풀이  (0) 2021.06.14
suninatas/웹/4번 문제풀이  (0) 2021.05.30
suninatas/웹/3번 문제풀이  (0) 2021.05.28
suninatas/웹/2번 문제풀이  (0) 2021.05.19
복사했습니다!