상세 컨텐츠

본문 제목

[wargame.kr] LEVEL6_fly me to the moon

카테고리 없음

by about_SC 2019. 7. 12. 10:53

본문

문제를 보자.
javascript로 구성된 게임이 있는데, 부정행위 방지 시스템을 우회하여 클리어해보라고 한다.

문제 진입 시 재미있는 게임이 진행된다.
해보자~!

죽었다..!
스코어가 36점인데, 31337점을 정확히 찍으라 하신다.
해당 메시지가 뜰 때, 전달되는 패킷이 있나 프록시를 잡아보자.

죽을때 날라가는 패킷이다.
token, score 파라미터로 구성되어 데이터가 전달되게 된다.
score 파라미터는 딱봐도 점수 파라미터 같다. 이 값을 문제에서 원하는 대로 31337 값으로 변조 후 전송해보자.

FLAG 값 획득이 가능했다. 허나, javascript 문제니 정석대로 풀어보자.
문제 진입 시 응답 값의 javascript 코드를 확인해보자.

정렬 없는 javascript 코드를 확인할 수 있다.
online Beautify를 이용해 javascript 코드를 정렬해보자.

깔끔하게 정렬되었다.
난독화를 위해 배열이 사용되었다. 이 또한 정리해도 되지만, 시간이 없다(총총)
코드를 살펴보자.

...

ajax 형태로 다른 URL에 값을 날리는 코드를 확인할 수 있다.
이를 디코딩 시 아래와 같은 코드를 확인할 수 있다.

응답 값의 BTunnelGame[getScre] () 함수 부분을 게임에서 요구하는 31337로 변경해보자.
크롬의 개발자도구 console 기능을 이용해 해당 코드를 실행한 후 게임을 진행해보자.

게임 진행 후 죽을 경우, FLAG 값 획득이 가능하다.

**POINT : javascript 코드에 대한 이해가 필요한 문제이다.