Description

Category: Web

Source: wargame.kr

Points: 200

Author: Jisoon Park(js00n.park)

Description:

javascript game.

can you clear with bypass prevent cheating system?

Write-up

간단한(?) 웹게임 해킹 문제이다.

좌우로 움직이는 벽을 피하는 게임인데, 한번 죽어보면 31337점을 획득해야 한다는 메세지가 뜬다.

게임 코드는 난독화 되어있는데, 연습 겸 분석해보자.

코드는 eval() 함수를 이용하도록 되어있다. eval() 함수에 주어지는 입력을 확인하기 위해서, eval을 document.write로 수정한 후 chrome의 개발자 도구에서 실행시켜 보면 일련의 소스 코드를 얻을 수 있다.

아직 좀 복잡하게 생겼으니, 적당한 beautifier를 찾아서 한번 더 정리해주면 좀 예쁜 코드를 볼 수 있다.

function secureGame() {
    var _0x8618x2 = this;
    var _0x8618x3 = true;

    /************/
    /* 중간 생략 */
    /************/

        if (BTunnelGame['checkLife']()) {
            setTimeout('updateTunnel()', 10)
        } else {
            $('img#ship')['fadeOut']('slow');
            $('img.left_wall')['css']('display', 'none');
            $('img.right_wall')['css']('display', 'none');
            $['ajax']({
                type: 'POST',
                url: 'high-scores.php',
                data: 'token=' + token + '&score=' + BTunnelGame['getScore'](),
                success: function(_0x8618x19) {
                    showHighScores(_0x8618x19)
                }
            })
        }
    };

    /************/
    /* 중간 생략 */
    /************/

    var token = '';

    function updateToken() {
        $['get']('token.php', function(_0x8618x20) {
            token = _0x8618x20
        })
    };

코드를 보면 checklife 해서 token과 score를 보내는 곳이 있고, token을 업데이트 하는 곳이 있다. token은 token.php를 이용해서 otp 형식으로 업데이트 되는것 같다. (burp suite에서도 확인할 수 있다.)

burp suite의 repeater를 이용해서 token을 다시 받아오고, 이 token과 함께 31337이라는 score를 보내 보면 "TOKEN ERROR - by. cheating prevention system"라는 에러 메세지를 만날 수 있다.

실제 게임이 동작하는 와중에 보내야 될 것 같은데, 더 분석하기는 귀찮으니 burp suite의 Match and Replace 기능을 이용해보자.

request body에 score=?를 만족하는 문자열이 보이면 점수를 바꿔서 보내도록 해두었다.

다시 게임을 시작한 후, 적당히 빨리 죽어주면 flag를 얻을 수 있었다.

Flag : 13d93b28b53d08b1bd9f43c497b390c7b9593943

'writeups > Web' 카테고리의 다른 글

login with crypto! but..  (0) 2019.11.25
login filtering  (0) 2019.11.25
Calculator  (0) 2019.11.23
WTF_CODE  (0) 2019.11.23
webhacking.kr 058  (0) 2019.11.23

+ Recent posts