设为首页收藏本站
  • 官方微信
    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 天前 | 显示全部楼层 |阅读模式
    传奇游戏脚本漏洞的检测需要结合引擎特性、脚本语言逻辑和实战经验,以下是系统性的排查方法和技术方案:
    一、核心漏洞类型与检测要点
    1. 权限控制漏洞
    表现形式:低权限玩家通过修改命令参数获取管理员权限(如执行@make命令刷装备)。
    检测方法:
    全局搜索权限命令:在服务端目录(如Mir200\Envir\Market_Def)搜索@GM、@Admin等关键字,检查命令是否设置权限等级。例如,HeroM2 引擎中#IF CHECKLEVELEX > 0需确保权限等级≥100。
    验证管理命令:通过m2server.exe控制台执行!CMDS命令,查看所有管理指令的权限设置,删除权限为 0 的危险命令(如@ChangeMode 2 1开启无敌模式)。
    2. 经济系统漏洞
    典型场景:
    元宝无限刷:回收脚本中未扣除物品导致重复兑换元宝(如#ACT Give 元宝 1000但未执行Take 物品 1)。
    物品复制:合成脚本中Take 材料 1未生效,导致材料不消耗但产出装备。
    检测工具:使用传奇脚本变量编辑器的 “全局搜索” 功能,定位所有Give、Take、AddItem命令,确保Take与Give成对出现。
    3. 触发逻辑漏洞
    技术原理:QF 触发脚本(如双击物品)未正确消耗触发物品,或地图触发条件未限制执行次数。
    排查步骤:
    检查触发序号:在DB\StdItems.DB中修改触发序号(如将1001改为1002),避免重复触发。
    地图触发验证:打开Mir200\Envir\MapEvent.txt,删除非必要的触发段(如非矿区地图的Mine命令)。
    4. 越权访问漏洞
    案例分析:
    水平越权:玩家 A 通过修改 URL 中的UserID=1为UserID=2,访问玩家 B 的背包数据。
    垂直越权:普通玩家通过构造@ChangeMode 1 1命令进入管理模式。
    检测方法:
    权限验证逻辑审查:检查脚本中#IF CHECKLEVELEX、#IF CHECKADMIN等条件是否完整,例如:
    python
    #IF
    CHECKLEVELEX > 99
    #ACT
    ChangeMode 1 1  ; 仅允许等级≥100的玩家进入管理模式

    抓包测试:使用 Fiddler 拦截UserID、ItemID等参数,尝试修改后提交,观察是否返回其他用户数据。
    二、工具链与技术手段
    1. 静态代码分析
    推荐工具:
    传奇脚本变量编辑器:支持中文输入、自动补全和语法高亮,可快速定位@StdModeFunc等危险命令。
    Checkstyle 插件:配置传奇脚本规则(如禁止硬编码密码),检测代码规范问题。
    操作示例:
    打开QFunction-0.txt,搜索SetShopItemPriceRate命令,检查是否设置会员限制。
    使用HashCheck工具比对脚本文件哈希值,验证是否被篡改。
    2. 动态调试与日志监控
    调试步骤:
    插入日志输出:在脚本关键位置添加LOG "当前金币:<$GOLD>",通过Mir200\Log目录的日志文件追踪变量值。
    控制台监控:在 M2Server 控制台输入!DEBUG 1开启调试模式,实时查看脚本执行流程和报错信息。
    抓包分析:使用 Fiddler 拦截UserID、MapID等参数,模拟异常输入测试防御机制。
    3. 自动化扫描与漏洞验证
    扫描工具:
    传奇漏洞扫描器:基于正则表达式匹配危险模式(如Give 元宝后无Take命令)。
    Burp Suite:通过 Intruder 模块爆破参数(如UserID、ItemID),检测越权漏洞。
    验证案例:
    元宝漏洞:在回收脚本中构造Take 木剑 1000,观察是否扣除玩家背包中的所有木剑。
    触发漏洞:快速双击经验卷,检测是否导致经验无限叠加。
    三、安全加固与版本控制
    1. 代码安全优化
    输入过滤:
    使用CheckValidStr函数过滤特殊字符(如;、--),防止 SQL 注入。
    示例:#IF CHECKVALIDSTR <$USERNAME> 1(仅允许字母数字)。
    加密与混淆:
    使用引擎自带工具加密QManage.txt、QFunction-0.txt,并添加水印(如#DEFINE COPYRIGHT "2025-08-06")。
    混淆变量名(如将@GiveItem改为@Xz123),增加逆向难度。
    2. 服务器防护策略
    端口与协议:
    修改远程端口(如将 3389 改为随机端口),通过注册表→HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp实现。
    禁用非必要协议(如 SMB),通过防火墙→高级安全→入站规则关闭。
    安全狗配置:
    开放传奇端口(7000、6888)和支付端口,拦截 SQL 注入特征(如UNION SELECT)。
    3. 版本管理与备份
    代码仓库:使用 Git 对脚本进行版本控制,每次修改前创建分支(如bugfix-202508)。
    关键文件备份:定期备份Mir200\Envir\Market_Def、DB\StdItems.DB,并存储到离线介质。
    四、版本差异与社区资源
    1. 引擎特性适配
    HeroM2:重点检查!Setup.txt中的GM权限配置,避免GM列表被篡改。
    GOM 引擎:使用GOM脚本调试器追踪变量,检测@UserCmd命令的参数过滤。
    2. 社区与技术支持
    论坛资源:
    64GM 论坛:搜索 “漏洞检测” 获取实战案例(如@ChangeMode命令滥用修复)。
    73su.com:下载韩版传奇服务端上线脚本,参考其自动化漏洞扫描逻辑。
    技术文档:
    引擎官方手册:如《GEE 引擎脚本开发指南》中的 “安全编码规范” 章节。
    漏洞数据库:参考Exploit-DB中mg2 0.5.1的 XSS 漏洞案例,避免类似逻辑缺陷。
    五、终极方案:漏洞复现与修复流程
    复现步骤:
    环境搭建:使用VirtualBox创建隔离测试环境,部署可疑服务端。
    攻击模拟:通过Python脚本自动化调用危险命令(如@make 裁决之杖 1)。
    日志捕获:记录M2Server.log中的Invalid command错误,定位未授权访问点。
    修复方案:
    权限细化:将@Make命令拆分为@MakeWhite(白名单物品)和@MakeGold(金币道具),分别设置不同权限。
    事务回滚:在交易脚本中添加#ELSEACT Rollback,确保Take失败时回滚Give操作。

    通过以上方法,可系统性检测和修复传奇脚本中的常见漏洞。建议结合慈云数据等专业工具进行实时监控,并加入传奇技术交流群获取最新漏洞情报,实现 “预防 - 检测 - 响应” 的闭环安全管理。对于商业服运营,建议定期聘请第三方安全团队进行渗透测试,确保脚本逻辑的健壮性。

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

    本版积分规则

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

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