当前位置: 首页 > news >正文

任务类风险漏洞挖掘思路

任务类风险定义:

大部分游戏都离不开任务,游戏往往也会借助任务,来引导玩家上手,了解游戏背景,增加游戏玩法,提升游戏趣味性。任务就像线索,将游戏的各个章节,各种玩法,各类玩家结合在一起。游戏离不开任务,但是开发者在设计任务时,也存在很多疏漏,导致任务类风险大量存在。任何修改任务正常执行流程,导致玩家可提升任务效率或收益的,都可以称为任务类风险。

任务类风险危害:

上述定义中提到了任务执行的正常流程,我们可以从任务执行环节上先熟悉游戏正常的流程:

  1. 任务执行前:获得任务领取条件,领取任务

  2. 任务执行时:完成任务条件

  3. 任务执行后:交付任务,领取任务奖励

结合上述流程,我们先来看几个案例:

当你辛辛苦苦完成了一个任务等级要求时,你却发现领取任务的NPC离你十万八千里,你需要传送,跑路赶过来领取一个任务,这时漏洞出现了,你在任何地点只需要利用下漏洞,便可以远程领取任务
在这里插入图片描述
当你在执行任务副本时,发现需要打好久好久,太费时间了,这是利用漏洞,直接修改任务难度,原本10分钟的副本任务现在只需要2分钟即可完成

当你在执行连环任务时,需要层层挑战,才可以最终完成任务,这是你利用漏洞,直接从任务的第一关卡跳转到第三关卡,大大减少了任务的完成时间:
在这里插入图片描述
更有甚者,连任务根本都不用领取,也不用去执行,就可以直接完成任务,获取对应任务奖励:
在这里插入图片描述
还有一些任务因为高收益高汇报,被游戏限定每日只能刷一次,或者具备一定前提条件才可以领取,但是却可以利用漏洞,实现任务的无限完成和奖励的无限领取。

总结上述案列,可将任务类风险按流程和效果做以下划分:
在这里插入图片描述
从执行效果上看,任务类风险的危害简单归纳如下:

  1. 极大的降低了任务完成时间,提高任务完成速度

  2. 非法获取或重复获取游戏任务中的大量奖励,提升玩家收益,影响游戏平衡

  3. 极大促进游戏工作室游戏内大量刷任务等非法行为。
    任务类风险存在原因:

出现任务类风险的根本原因是服务器的校验疏忽,只单单对任务最终结果做了校验,进而导致了任务的前置条件和执行过程出现了各种被绕过,被多次利用的可能。

任务类风险漏洞挖掘方法:

结合上述原因分析,如何确定服务器的校验过程是任务类风险漏洞挖掘的核心思路,而对服务器的验证一般均为黑盒测试,常见的方法便是结合猜想,去在协议层进行重发,屏蔽和修改。先来看看一般的任务类协议格式和交互流程:

一般任务请求/完成的协议格式如下:
在这里插入图片描述
在这里插入图片描述
在大多数任务交互过程中,协议1,协议2,协议3,协议4是必不可少的,其他协议需要根据游戏具体逻辑进行分析确认,在验证过程中,针对上述协议进行重发,屏蔽和修改,如果服务器校验不够严谨的话,则会触发相应漏洞。

下面举一案列进一步说明验证过程:

某游戏在一项挑战赛中有一连环任务,玩家在连续完成7次挑战后最终完成任务,获得丰富任务奖励。其接受任务时上行协议被工具截获如下:

[01 21 00 00 00 00 00 36 04 00 E8 F4 68 21 00 00 f7 50 00 02]

二进制数据被工具切割成如下:

[01 21]:协议号

[00 00 00 00]:未知

[00 36 04 00]:服务器ID

[E8 F4 68 21]:玩家ID

[00 00 F7 50]:任务ID

[00 02 ]:任务环节

协议工具截获后,确认其环节数字段后,可将[00 02]修改为指定关卡,重发协议后,玩家即可进行第几次关卡挑战,如果直接改写为[00 07]进行重发,则可直接完成任务。

任务类风险验证需要大胆猜想,并结合协议工具进行分析验证,结合上述协议总结的协议交互流程,可以对任务类风险的挖掘常用方法做出归纳如下图:
在这里插入图片描述

http://www.lryc.cn/news/26327.html

相关文章:

  • 2023年Dubbo常见面试题
  • 星光2开发板使用ECR6600U无线wifi网卡的方法
  • 【ArcGIS Pro二次开发】(11):面要素的一键拓扑
  • 【实现点击下载按钮功能 Objective-C语言】
  • 界面控件DevExpress WinForm——轻松构建类Visual Studio UI(三)
  • 项目实战-瑞吉外卖day01(B站)
  • Linux 学习整理(使用 iftop 查看网络带宽使用情况 《端口显示》)
  • Vue3创建项目(四)axios封装及接口配置
  • 【算法笔记】递归与回溯
  • 蓝桥杯备赛——Echarts学习
  • 动态规划--最长公共子串
  • 【运筹优化】剩余空间法求解带顺序约束的二维矩形装箱问题 + Java代码实现
  • 第四阶段15-关于权限,处理解析JWT时的异常,跨域请求,关于Spring Security的认证流程
  • 毕业设计 基于51单片机的指纹红外密码电子锁
  • 【JavaWeb】数据链路层协议——以太网 + 应用层协议——DNS
  • docker 容器安装 python jre
  • Linux下将C++程序打包成动态库静态库方法
  • Centos7 服务器基线检查处理汇总
  • PaddleOCR遇到 lanms-neo问题处理
  • coreldraw2023安装包下载及新功能介绍
  • Nginx 负载均衡服务失败场景
  • 开学季哪个电容笔好?2023口碑最好电容笔推荐
  • 经验分享-如何使用http调用chatGPT-3.5-turbo模型API
  • 【C#】yyyy-MM-dd HH:mm:ss 时间格式 时间戳 全面解读超详细
  • 基于神经网络的滑模鲁棒控制
  • 2023年融资融券研究报告
  • Nodejs环境配置 | Linux安装nvm | windows安装nvm
  • 显示接口测试
  • Tcl_Init error: Can‘t find a usable init.tcl in the following directories
  • 进程控制(详解)