设为首页收藏本站
  • 官方微信
    lmkj_wx 微信公众号 添加方式:
    1:扫描左侧二维码
  • 手机访问
    lmkj_sj
  •  找回密码
     立即注册

    QQ登录

    只需一步,快速开始

    查看: 6|回复: 0

    一些常见的传奇游戏脚本漏洞

    [复制链接]
    avatar
    • 打卡等级:魔龙套勇士
    • 打卡总天数:117
    • 打卡月天数:10
    • 打卡总奖励:13851
    • 最近打卡:2025-08-10 00:32:31

    6538

    主题

    130

    回帖

    8084

    积分

    管理员

    本站站长

    积分
    8084
    online_admin 发表于 4 天前 | 显示全部楼层 |阅读模式
    传奇游戏脚本(基于 HeroM2、GOM、GEE 等引擎的.txt脚本文件)因逻辑设计疏漏或权限校验缺失,容易出现各类漏洞。以下是常见漏洞类型、原理及典型案例,结合脚本代码示例说明:
    一、权限控制漏洞(最常见)
    表现形式
    低权限玩家(普通用户)可执行管理员命令(如刷装备、修改属性、开启无敌模式),或越权访问管理功能(如后台配置、玩家数据)。
    原理
    脚本中未对操作权限进行严格校验,或使用了错误的权限判断函数(如将管理员权限等级100误写为0)。
    典型案例
    text
    ; 错误的刷装备脚本(QFunction-0.txt)
    #ACT
    CheckLEVELEX > 0  ; 错误:权限等级≥1即可执行(普通玩家等级通常≥1)
    Make 裁决之杖 1   ; 刷出顶级武器

    ; 正确写法应限制高权限:
    #IF
    CheckLEVELEX > 99  ; 仅管理员(权限≥100)可执行
    #ACT
    Make 裁决之杖 1


    衍生漏洞
    管理命令未隐藏:如@GM、@Admin等命令未加密,玩家通过猜解命令直接调用。
    权限继承漏洞:子账号默认继承父账号权限,导致普通玩家通过 “师徒系统”“行会职位” 间接获取高权限。
    二、经济系统漏洞(影响游戏平衡)
    表现形式
    玩家可无限刷元宝、金币、材料等资源,或通过 “空手套白狼” 获取高价值物品(如用 1 个材料合成 10 个装备)。
    核心原理
    “只给不扣”:脚本中Give(添加资源)与Take(扣除资源)命令未成对出现。
    数值校验缺失:未限制单次操作的资源数量或次数。
    典型案例
    无限刷元宝(回收脚本)
    text
    ; 错误的装备回收脚本(Market_Def\回收.txt)
    #IF
    CheckItem 木剑 1  ; 检查玩家是否有1把木剑
    #ACT
    Give 元宝 100     ; 给100元宝(但未扣除木剑)

    ; 漏洞:玩家可重复提交木剑,无限获取元宝
    ; 修复:添加Take命令
    #ACT
    Take 木剑 1
    Give 元宝 100

    材料不消耗合成
    text
    ; 错误的装备合成脚本(QManage.txt)
    #IF
    CheckItem 铁矿 10
    #ACT
    ; 遗漏Take铁矿 10,导致材料不消耗但产出装备
    Make 青铜剑 1

    三、触发逻辑漏洞(无限触发效果)
    表现形式
    玩家通过重复触发脚本(如双击物品、进入地图、对话 NPC),无限获取奖励(经验、属性、物品)。
    原理
    未限制触发次数(如未记录 “已触发” 状态)。
    触发后未消耗 “触发媒介”(如物品、任务道具)。
    典型案例
    无限经验卷
    text
    ; 错误的经验卷脚本(StdItems.DB关联的QF触发)
    #ACT
    AddExp 10000  ; 增加10万经验
    ; 遗漏Delete命令,导致经验卷可重复双击使用

    ; 修复:添加删除物品命令
    #ACT
    Delete 经验卷 1
    AddExp 10000

    地图无限刷怪 / 奖励
    text
    ; 错误的地图进入触发(MapEvent.txt)
    [地图=100 进入触发]
    #ACT
    Make 金币 1000  ; 每次进入地图都给1000金币,无次数限制

    ; 修复:通过变量记录触发次数
    #IF
    CheckVar HasaEnter 0  ; 检查变量HasaEnter是否为0(未进入过)
    #ACT
    SetVar HasaEnter 1    ; 标记为已进入
    Make 金币 1000

    四、越权访问漏洞(数据安全风险)
    表现形式
    水平越权:玩家 A 可查看 / 修改玩家 B 的背包、属性、任务数据(如通过修改UserID参数)。
    垂直越权:普通玩家可执行管理员才能操作的后台功能(如踢人、禁言、修改服务器配置)。
    原理
    脚本未校验操作对象与执行者的关联性,或参数传递时未加密 / 校验。
    典型案例
    查看他人背包
    text
    ; 错误的背包查询脚本(@LookBag命令)
    #ACT
    ; 直接通过输入的UserID查询,未验证是否为本人
    OpenBag <$USERID>  ; <$USERID>为玩家输入的目标ID

    ; 修复:校验目标是否为自己
    #IF
    Equal <$USERID> <$USERNAME>  ; 目标ID必须等于当前玩家ID
    #ACT
    OpenBag <$USERID>

    越权踢人
    text
    ; 错误的踢人脚本(@Kick命令)
    #ACT
    ; 未检查是否为管理员,普通玩家可任意踢人
    KickPlayer <$TARGET>

    ; 修复:添加权限校验
    #IF
    CheckAdmin 1  ; 仅管理员(权限等级1)可执行
    #ACT
    KickPlayer <$TARGET>

    五、数值溢出与异常漏洞
    表现形式
    玩家属性(攻击、防御)、金币、经验等数值异常(如负数值、远超上限的数值),导致游戏逻辑崩溃(如无法攻击、任务无法完成)。
    原理
    脚本未限制数值范围,或计算时未处理溢出(如整数超过最大值后变为负数)。
    典型案例
    金币溢出
    text
    ; 错误的金币奖励脚本
    #ACT
    AddGold <$PARAM>  ; <$PARAM>为玩家输入的数值,未限制上限
    ; 漏洞:玩家输入9999999999,金币超过最大值(如2^31-1),变为负数

    ; 修复:限制最大数值
    #IF
    Less <$PARAM> 1000000  ; 单次最多添加100万金币
    #ACT
    AddGold <$PARAM>

    属性叠加异常
    text
    ; 错误的BUFF脚本(如“战神祝福”)
    #ACT
    AddAttack 10  ; 每次触发增加10点攻击,无上限
    ; 漏洞:玩家可重复触发,攻击变为数万,秒杀所有怪物

    ; 修复:限制叠加次数或总上限
    #IF
    CheckAttack < 100  ; 攻击上限100点
    #ACT
    AddAttack 10

    六、注入类漏洞(脚本逻辑篡改)
    表现形式
    玩家通过输入特殊字符(如;、#、--),篡改脚本执行逻辑(如在聊天框输入命令执行刷装备)。
    原理
    脚本未过滤用户输入的特殊字符,导致输入内容被解析为脚本命令的一部分。
    典型案例
    text
    ; 错误的聊天脚本(未过滤特殊字符)
    #ACT
    SendMsg 0 玩家<$USERNAME>说:<$MSG>  ; <$MSG>为玩家输入的聊天内容

    ; 漏洞:玩家输入“;@make 屠龙刀 1”,脚本被解析为:
    ; SendMsg 0 玩家张三说:;@make 屠龙刀 1
    ; 分号“;”截断原命令,执行@make刷装备

    ; 修复:过滤特殊字符
    #IF
    CheckValidStr <$MSG> 1  ; 仅允许字母、数字、中文(过滤;、#等)
    #ACT
    SendMsg 0 玩家<$USERNAME>说:<$MSG>
    漏洞防范通用原则
    严格权限校验:所有敏感操作(刷物品、改属性)必须用CheckLEVELEX、CheckAdmin限制权限。
    成对使用命令:Give/Add类命令必须与Take/Delete类命令配合,确保 “有增有减”。
    限制触发次数:通过变量(SetVar/CheckVar)记录触发状态,避免重复执行。
    过滤用户输入:用CheckValidStr等函数过滤特殊字符,防止注入。
    数值范围控制:对金币、属性等数值设置合理上限,避免溢出。

    不同引擎(如 HeroM2、GOM)的函数可能略有差异,但核心逻辑漏洞的原理一致,需结合具体引擎文档进行针对性防护。

    您需要登录后才可以回帖 登录 | 立即注册 qq_login

    本版积分规则

    QQArchiver 手机版 小黑屋 39传奇素材网 ( 蜀ICP备2022016510号-3 )

    快速回复 快速发帖 返回顶部 返回列表