- 打卡等级:魔龙套勇士
- 打卡总天数:117
- 打卡月天数:10
- 打卡总奖励:13851
- 最近打卡:2025-08-10 00:32:31
管理员
本站站长
- 积分
- 8084
|
测试验证修复后的传奇游戏脚本漏洞需系统性覆盖权限控制、经济平衡、触发逻辑等核心场景,结合引擎特性和实战模拟,确保修复后的脚本在真实环境中稳定运行。以下是分阶段的测试方案,包含具体操作步骤和工具推荐:
一、权限控制漏洞验证
1. 权限边界测试
测试场景:验证普通玩家(权限等级 0-99)是否无法执行敏感命令,管理员(权限≥100)是否可正常操作。
操作步骤:
创建 3 个测试账号:普通玩家(权限 0)、高级玩家(权限 99)、管理员(权限 100)。
分别登录账号,执行修复后的敏感命令(如@make、@ChangeMode):
普通玩家应提示 “权限不足”,后台日志无执行记录。
管理员应正常执行,且命令效果符合预期(如刷出装备、开启无敌模式)。
检查引擎配置文件(如!Setup.txt)中的权限等级定义,确保与脚本逻辑一致(如GMLevel=100)。
2. 隐藏命令测试
测试场景:验证未公开的管理命令(如@Debug、@Rollback)是否仅管理员可见。
操作步骤:
用普通玩家账号输入!CMDS命令,查看可执行指令列表,确保无敏感命令。
用管理员账号输入!CMDS,确认敏感命令存在且功能正常。
尝试通过抓包工具(如 Fiddler)构造未公开命令的请求,观察服务器是否响应(应返回Invalid Command)。
二、经济系统漏洞验证
1. 资源平衡测试
测试场景:验证回收 / 合成脚本中Take与Give命令是否成对生效,避免无限刷资源。
操作步骤:
回收功能:
提交 1 个木剑,检查背包是否扣除 1 个木剑,元宝增加 50(假设修复后逻辑)。
重复提交 10 次,确认背包木剑数量为 0,元宝总量 500,无溢出。
合成功能:
提交 10 个铁矿合成青铜剑,检查铁矿减少 10 个,背包新增青铜剑 1 个。
模拟背包铁矿不足(如只有 5 个),确认合成失败并提示 “材料不足”。
2. 数值溢出测试
测试场景:验证金币、经验等数值是否在合理范围内,避免负数值或异常增长。
操作步骤:
用管理员账号执行AddGold 999999999(超引擎最大值),观察金币是否显示为上限值(如 2147483647)。
普通玩家通过任务获取金币,测试单次奖励上限(如 10 万金币),超额输入(如 100 万)应被拦截。
检查M2Server.log是否有Gold overflow等错误日志。
三、触发逻辑漏洞验证
1. 触发次数限制测试
测试场景:验证经验卷、地图奖励等是否仅触发一次,避免重复获取。
操作步骤:
经验卷测试:
双击经验卷 1 次,确认经验增加且物品消失。
再次尝试双击,应无反应,变量UsedExpScroll状态为 1。
地图奖励测试:
进入地图 100,获取 1000 金币,变量EnterMap100变为 1。
退出后重新进入,应提示 “已领取奖励”,金币无新增。
2. 触发媒介消耗测试
测试场景:验证触发脚本后是否正确消耗媒介(如任务道具、技能书)。
操作步骤:
使用@UseSkill命令学习技能,检查技能书是否从背包删除。
提交任务道具(如 “火龙鳞片”)完成任务,确认道具数量减少,任务状态更新为 “已完成”。
四、注入类漏洞验证
1. 输入过滤测试
测试场景:验证聊天、输入框等是否过滤特殊字符(如;、@、--)。
操作步骤:
在聊天框输入;@make 屠龙刀 1,确认消息被拦截,提示 “非法字符”。
在任务输入框输入' OR 1=1 --,检查是否触发 SQL 注入(应返回Invalid input)。
用 Burp Suite 拦截请求,修改参数UserID=1;@KickPlayer 张三,观察服务器是否执行额外命令(应拒绝并记录攻击日志)。
2. 命令注入测试
测试场景:验证脚本是否正确处理玩家输入,避免命令拼接漏洞。
操作步骤:
执行@SetName 张三;@Make 裁决之杖 1,确认角色名仅修改为 “张三”,无刷装备动作。
检查脚本中<$USERNAME>等变量是否使用CheckValidStr过滤(如CheckValidStr <$USERNAME> 1)。
五、引擎兼容性与压力测试
1. 引擎特性测试
测试场景:验证脚本在目标引擎(如 HeroM2、GOM)上的兼容性。
操作步骤:
HeroM2 引擎:检查QFunction-0.txt中的CheckLEVELEX函数是否正确识别权限等级。
GOM 引擎:测试@UserCmd命令的参数过滤逻辑,确保与引擎文档一致(如CheckAdminLevel)。
对比不同引擎的日志输出(如M2Server.log、GOMLog.txt),确认无因函数差异导致的报错。
2. 压力与稳定性测试
测试场景:模拟高并发操作,验证脚本在压力下的稳定性。
操作步骤:
使用自动化工具(如 JMeter)模拟 100 个玩家同时执行@Make命令,持续 10 分钟。
观察服务器 CPU、内存占用,检查是否出现卡顿或崩溃,日志中是否有Command flood detected等防御记录。
测试合成 / 回收功能的并发处理,确保资源扣除与增加无延迟或数据不一致(如背包显示异常)。
六、日志与数据监控
1. 日志审计
关键日志检查:
权限操作:M2Server.log中是否记录管理员执行的@make、@ChangeMode等命令。
资源变动:ItemLog.txt中是否记录玩家元宝、物品的增减(如Player 张三 Give 元宝 50)。
攻击尝试:SecurityLog.txt中是否记录非法字符、注入攻击的 IP 和时间戳。
2. 数据一致性验证
数据库对比:
执行@AddExp 100000后,查询数据库Character表,确认Exp字段增加 10 万。
测试跨服交易后,检查TradeLog表是否记录完整交易信息,无重复或丢失。
七、模拟攻击与漏洞复现
1. 历史漏洞复现
测试场景:验证修复后的脚本是否规避已知漏洞(如红名村刷钱、白日门复制金条)。
操作步骤:
红名村任务:提交匕首时卡交易界面,确认无法重复领取金币。
仓库复制:存入 1002000 金币后捆绑金条,检查金币是否正确扣除,无无限复制。
2. 自动化攻击测试
测试场景:使用脚本模拟玩家利用漏洞的行为,验证防御机制有效性。
操作步骤:
编写 Python 脚本(基于pyautogui),自动重复触发经验卷、地图奖励等逻辑。
用 AutoHotkey 模拟快速双击物品,验证是否触发防沉迷机制(如冷却时间)。
检查服务器是否封禁高频操作的 IP,并记录Attack detected日志。
八、测试报告与回滚方案
测试报告模板:
测试项 测试结果 日志记录位置 修复状态
普通玩家执行@make 拒绝 M2Server.log 已修复
经验卷重复使用 拦截 QFLog.txt 已修复
注入攻击尝试 记录 SecurityLog.txt 已修复
回滚方案:
备份修复前的脚本(如QFunction-0_backup.txt)和数据库(Character_backup.sql)。
若测试发现重大漏洞,5 分钟内回滚至备份版本,通过!Reload命令重启脚本生效。
九、终极验证:灰度发布与玩家测试
灰度发布:
在测试服开放修复后的功能,邀请 50-100 名玩家体验,收集反馈(如 “元宝获取异常”“装备无法合成”)。
监控实时数据(如元宝产出量、合成成功率),对比修复前后的波动(允许 ±5% 误差)。
玩家测试:
组织 “漏洞悬赏” 活动,奖励发现未修复漏洞的玩家(如 100 元 / 漏洞)。
分析玩家行为数据(如命令执行频率、资源消耗曲线),识别潜在风险点(如某地图访问量激增)。
通过以上多维度测试,可确保修复后的脚本在权限控制、经济平衡、触发逻辑等核心场景下稳定运行。建议将测试流程整合到 CI/CD 管道,实现自动化回归测试,持续保障游戏安全。
|
|