본문 바로가기
Hacking/wargame.kr

[wargame.kr] Question 6. Fly me to the moon

by 알거음슴 2021. 6. 24.

문제

javascript game. can you clear with bypass prevent cheating system?

자바 스크립트 게임, 부정행위 방지 시스템으로 해결할 수 있나요?

 

 

풀이

비행기 게임이 확인된다 마우스를 따라 움직이는 비행기와 무작위로 좁혀져 오는 기둥이 있고 기둥에 닿을 경우 게임오버가 된다 31337 SCORE 를 달성해야 한다는 내용이 출력된다.

 

개발자 도구(F12) -> Elements 탭으로 진입하여 <head> 태그의 내용을 확인한다. <script type="text/javascript"> 의 하단 내용을 확인 시 난독화된 javascript code를 확인할 수 있다 난독화된 javascript code를 해독할 수 있는 사이트를 활용해야한다.

 

Online JavaScript Beautifier site : https://beautifier.io/

 

Beautifier 를 통해 난독화된 자바스크립트의 내용을 모두 넣고 Beautify Code 버튼을 누르면 읽기 좋은 형태로 변환된 자바스크립트 코드를 확인할 수 있다. 해당 코드를 통해 Score를 정의하고 있는 내용을 분석해본다.

 

var _0x8618x6 = 0; 으로 지정된 변수는 _0x8618x7() 함수를 통해 정의된다. this[‘getScore’] 은 함수 _0x8618x7()return 한다 즉 변수 0x8618x6 getScore 를 지정하는 변수로 볼 수 있다.

 

 

개발자 도구(F12) -> Console 탭으로 이동 후 디컴파일한 코드를 모두 붙여넣고 var _0x8618x6 = 40000; 으로 값을 수정한다.

Key : 0b126dacf2ab649f70c851f1f32459a0bda77d59

값을 변경 후 다시 게임을 시작하면 Score: 40000 부터 시작하며 Game over 창이 아닌 Flag 값이 있는 화면이 출력된다. 해당 Flag 값을 제출하면 통과할 수 있다.