본문 바로가기

드림핵

[드림핵 워게임] [wargame.kr] fly me to the moon

<문제>

 

<풀이>

문제 사이트에 접속하면 처음으로 보이는 페이지이다.

문제에 나와있는대로 자바스크립트로 만든 게임인 것 같다.

클릭해서 게임을 플레이해본다.

 

우주선이 터널 벽에 닿으면 Game over가 되면서

YOU NEED GET THE SCORE 31337 이라는 메시지가 뜬다.

 

SCORE가 31337이 될 때까지 플레이하려면 아주 많은 시간과 노력이 걸리므로

javascript 코드를 수정해서 SCORE 값을 저장하는 변수에 임의로 31337을 입력해줄 것이다.

 

개발자도구(F12)를 열어서 Elements 탭에서 script 코드가 있는 <script>태그를 살펴보았다.

<head></head> 안에서 난독화 되어있는 script 코드를 찾을 수 있었다.

 

난독화되더있는 javascript를 디코딩해주는 사이트가 있다.

https://beautifier.io/

 

Online JavaScript beautifier

Beautify JavaScript, JSON, React.js, HTML, CSS, SCSS, and SASS

beautifier.io

 

 

사이트에 코드를 붙여넣고 Beautify Code를 클릭했다.

 

251행의 긴 코드가 나왔다.

 

score라는 문자열을 검색해보니 getScore 함수를 찾을 수 있었다.

_0x8618x7() 함수의 반환값을 return하는 것을 보니 _0x8618x7() 함수의 return 값이 score와 관련이 있는 것 같다.

 

_0x8618x7를 검색해보니 _0x8618x6이라는 변수를 return하고 있다.

 

개발자도구의 Console에 secureGame() 함수 전체를 복붙하고

 

_0x8618x7() 함수를 찾아서 return 값을 31337로 바꾼 뒤 적용해줬다.

 

다시 게임을 시작하고 GAME OVER 시키자 FLAG가 출력되었다.