안경잡이개발자

728x90
반응형

  fly me to the moon 문제 또한 웹 해킹 문제 유형입니다. 자바스크립트(JavaScript) 클라이언트 단의 코드 분석을 통해 문제를 해결할 수 있습니다.

 

 

  [Start] 버튼을 누르면 간단한 형태의 오락실 게임이 등장합니다.

 

 

  게임을 대충 플레이한 뒤에 패배하시면, 다음과 같이 점수가 31337점이 되어야 한다고 합니다. 아무래도 고득점을 받아야 플래그(Flag) 값을 얻을 수 있을 것입니다. 어떻게 하면 플래그 값을 얻을 수 있을까요?

 

 

  난독화가 되어 있는 자바스크립트(JavaScript) 소스코드를 확인해야 합니다.

 

 

  이럴 때는 JS Beautifier를 이용할 수 있습니다. 매우 복잡한 난독화 기법이 사용되지 않은 경우, 간단한 형태의 난독화는 이러한 도구를 이용하면 풀리게 됩니다.

 

  ▶ JS Beautifier 홈페이지: https://beautifier.io/

 

  위 사이트에 접속하여 난독화 된 소스코드를 풀어 본 뒤에, 확인을 해보시면 this['getScore']라는 함수는 _0x8618x7() 함수와 동일합니다. 또한 _0x8618x7() 함수는 _0x8618x6이라는 변수의 값을 가져오는 함수입니다. 다시 말해 _0x8618x6이 점수(Score)를 의미하는 함수일 것이라고 예상할 수 있습니다.

 

 

  따라서 게임 페이지에서 개발자 도구(F12)를 실행하여, [Console] 탭으로 이동해서 다음과 같이 난독화가 풀린 소스코드를 통째로 복사한 뒤에 score에 해당하는 변수 값만 31,337로 변경하여 붙여넣기 할 수 있습니다.

 

 

  이후에 엔터(Enter)를 입력하여 적용한 뒤에 다시 게임을 플레이하면 정상적으로 Flag가 등장합니다.

 

 

 

728x90
반응형