【WP】[VNCTF 2021]Ez_game

本文介绍了通过分析游戏脚本`game.js`,发现可以利用调试模式中的特定键值(N键)来跳关。在调试配置中设置某些参数后,可以进入最后一关并修改玩家数据以通关。此外,还揭示了通过缩放浏览器窗口来获取FLAG的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[VNCTF 2021]Ez_game

打开为一个小游戏,查看调试器,发现了三个js文件,在game.js中发现如下的语句

function Update()
{
    ++levelFrame;
    UpdateAudio();
    
    // save data
    if (!speedRunMode)
        localStorage.kbap_coins = playerData.coins;
        
    // update speed run time
    if (!paused && !winTimer.IsSet() && !player.IsDead())
        speedRunTime += timeDelta;
    
    // restart if dead or won
    if ((player.IsDead() || winTimer.IsSet()) && KeyWasPressed(27))
        loadNextLevel = 2;
        
    // load next level when ready
    if (endLevelTimer.IsSet() && endLevelTimer.Elapsed())
        loadNextLevel = 1;
    
    // debug key N to load next level
    if (debug && KeyWasPressed(78))
        loadNextLevel = 1;
        
    // zoom out on final level
    if (isFinalLevel)
        cameraScale = Max(cameraScale-.001,1); 
        
    if (isStartLevel)
    {
        // title screen
        let pos = new Vector2(8,3.7);
        let t = levelTimer.Get();
        let p = Percent(t,0,3.3)
        let b = Math.abs(3-4*p)/1.7;
        let c1 =`hsla(${t*99},99%,50%)`;
        level.DrawText('BOUNCE',   pos.Clone().AddXY(0,-b), 33*p,'center',2,'#000',c1);
        level.DrawText('BACK',     pos.Clone().AddXY(0,b+1.2), 33*p,'center',2,'#000',c1);
        if (levelFrame==200)
            level.DrawText('A JS13k 2019 Game',   new Vector2(8,9.5), 14);
        if (levelFrame==260)
            level.DrawText('By Frank Force',   new Vector2(8,10.5), 14);
    }
}

得知,在调试模式下,按N可以进入下一关

// debug config

//godMode=1;
//debug=1;
//debugCanvas=1;
//debugCollision=1;
//soundEnable=0;

借助这些语句可以进入调试模式

class PlayerData
{
    // track player data between levels (when player is destroyed)
    constructor()
    {
        this.health = 3;
        this.healthMax = 3;
        this.boomerangs = 1;
        this.bigBoomerangs = 0;
        this.coins = 0;
    }
}

playerData.bigBoomerangs=99

顺便将回旋镖数量改掉,方便通关,
在这里插入图片描述

进入debug模式,直接N,发现第10关为最后一关,此时的isFinallevel=true,打掉boss即可通关。

在这里插入图片描述

缩放浏览器窗口,可得FLAG

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值