12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 546|回复: 0

游戏漏洞挖掘之文本校验类风险

[复制链接]

303

主题

303

帖子

616

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
616
发表于 2019-8-20 11:10:29 | 显示全部楼层 |阅读模式
文本风险定义:游戏中动画,声音参与和玩家交互之外,游戏中的文本属于和玩家交互中一项重要元素。由玩家操作触发任何不同于游戏自身逻辑设定,进而破坏游戏平衡的文本内容都可以称之为文本类风险漏洞。(这个定义自己瞎写的
文本风险危害漏洞举例):多玩家可能有疑问,一些文本内容能产生多大的风险呢?笔者肯定小题大做
我们先来看几个例子:游戏中有没有遇到过一些玩家无限变色文字打广告或者刷着信息呢?

或者游戏中出现大量反动垃圾信息?

你去尝试制止他的时候,是否会受到对方的辱骂?更或者,直接无限消息刷屏你无法正常接受其他消息

你发现自己无能为力的时候,你想去举报他,却发现对方是空昵称!!!

对方不是空昵称时,以为自己可以举报,但是对方的昵称你能够输入法打出来么?

说你可以复制粘贴,但是你真的确定复制出来的昵称就是对方的昵称么?(如下图角色昵称表面看是x?,但是却无法找到玩家)


好不容易当你遇到一个作弊而且拥有正常昵称的玩家,终于可以举报了,却发现下图这种情况

到底举报的是谁???上述可见,文本风险稍微加以利用,造成的危害远远比想象中的大很多很多上述风险进一步归纳如下:

文本类风险存在原因:文本类风险存在的原因是对文本没有做校验或校验强度不高,或者校验只放在本地客户端,有些游戏虽然做了服务器校验,但是校验强度不够。没有校验,
文本类风险漏洞挖掘方法知道文本漏洞存在的原因,针对做校验的游戏可以通过用户直接操作文本挖掘漏洞,当游戏测做了检验时,则挖掘的关键便是如何去巧妙的构造协议去绕过游戏的重重校验了。在开始挖掘前,先来简单的了解下文本类协议的基本结构(可能前后顺序和具体字段会有出入)

[table][tr][td=1,1,66]Clsid(协议ID)[/td][td=1,1,113]Hash/ACK(hash/序列)[/td][td=1,1,57]Others(其他)[/td][td=1,1,112]Text_len(此条协议长度)[/td][td=1,1,96]Text(文本的内容)[/td][td=1,1,109]Text_ attribute(协议属性字段)[/td][/tr][tr][td=3,1,236]ProtocolHead(协议头)[/td][td=3,1,317]ProtocolData(协议数据包)
结合上述总结文本类风险,对照协议结构图,文本内容风险漏洞主要更改协议结构中Text字段,而文本属性风险风险主要更改Text_lenText_attribute字段。
下述分别举例各类风险挖掘过程:选取某游戏在创建角色昵称协议,简单说明唯一性风险和空风险常规挖掘思路游戏登入界面创建角色时发送的协议如下[05 D8 0B 05 F6 DB 05 31 32 33 00 00]协议被工具切割为以下结构:
l 协议结构(游戏创建角色昵称协议[05 D8 0B 05]-协议ID[F6 DB]-协议ACK[05]-协议长度[31 32 33]- TEXT内容(角色名[00 00 ]-文本结束标志
l 唯一性风险上述协议实际上为创建角色名为123的角色昵称为构造雷同角色可以按照上述协议结构直接发包,如果服务器校验通过,则证明判断逻辑在本地,创建雷同角色成功,如果服务器校验不通过,则需要想办法进行绕过:服务器校验不通过证明后台对角色名有重复检测,看来直接构造完全相同的字符是不行的,那么我们可以构造出看起来相同的字符,比如[31 32 33 00 00 00]这样的文本内容,或者将其TEXT内容改为[31 32 33 0A 0D],因为ascii-0A 0D为特殊转义字符,解析换行符,游戏不解析特殊字符,则对玩家而言其实是不可见的,可以利用转义字符欺骗服务器,服务器认定为[31 32 33]和[31 32 33 0A 0D]为不同文本,可创建角色成功,但用户看起来效果是一样的,所以雷同角色名再次被创建。
l 风险:仍然是上述游戏,创建空昵称,我们直接将[31 32 33]字段改写为[00 00 00],观察服务器回馈,如果通过,则空角色创建成功,如果不行,我们继续利用上述的思想,利用转义字符进行欺骗,构造[0A 0D]的TEXT段如果服务器过滤不完全则又一次创建出了空昵称 选取某游戏发言协议,简单介绍脏词/敏感词/特殊词,文本大小/颜色/长度的挖掘思路游戏中玩家另一名玩家发言时,我们截获到协议的数据为[3C 2C 37 0A 30 39 12 0D 0C 00 00 00 E2 88 95 F8 EA E8 6D 00 01 00 00 00 E0 00 00 00 76 65 6E 69 64 69 63 00 00 00 17 00 0C 00 00 00 24 69 66 30 32 24 31 38 24 31 38 24 00 1C 00 00 00 01 00 00 00……]该协议被工具切割成如下
Ø 协议结构(游戏的聊天发言的协议[3C 2C 37 0A 30 39 12 0D]-玩家ID[0C 00 00 00]-频道ID[E2 88 95 F8 EA E8 6D 00]-接受者玩家ID[01 00 00 00]-接受者频道ID[E0 00 00 00 76 65 6E 69 64 69 63 00 00]-接受者昵称[00 17 00 0C 00 00 00 24 69 66 30 32 24 31 38 24 31 38 24 00]-聊天信息TEXT,其中17代表TEXT段长度,后续解析成字符串$if02$18$18$Z,这是这款游戏的文本格式,最[00]代表协议结束[1C 00 00 00]-聊天类型[01 00 00 00 ]-聊天标志
l 脏词/敏感词对于上述协议结构如果想要创建脏词则直接修改协议中的TEXT段进行重发,如将协议$if02$18$18$Z中if02字符换成对应的脏字即可。如果发送的敏感字符被服务器抛弃,则可以尝试利用前面转义字符的方法去构造特殊字符欺骗服务器。
l 特殊词特殊词可以简单理解成几年前的火星文,ascii层面来看,是一些无法被解析成文本字符的文字,其构造方式很简单,直接将上述协议中text字符修改为我们常见的ascii和汉子编码外的字符即可,这样再由游戏解析变变成无法辨认的特殊词
l 文本大小继续选取上述协议字段,发现了TEXT中[00 17 00 0C 00 00 00 24 69 66 30 32 24 31 38 24 31 38 24 00]ascii被解析成$if02$18$18$Z,其中if02代表内容,而后续18,18经过分析可最终确定为文本的长宽,直接修改1818为FF, FF,则可以实现超大文本。
l 文本颜色继续选取上述协议字段,解析被工具切割的字段中,一项聊天类型字段[1C 00 00 00]-聊天类型 进一步分析可以了解到1C代表普通聊天,而会员发送消息时,字段被解析成了[20 00 00 00 ],显示字体为紫色,则可以直接利用工具修改对应字段后进行协议发送,实现文本颜色的修改
l 文本频率详见协议重放章节 总结上述挖掘方法可简单作出归纳

文本风险属于游戏中重要的漏洞分类之一利用方式较为简单外网下漏洞传播迅速且危害较大。在漏洞挖掘过程中,需要结合服务器的反馈猜测游戏对应的过滤规则,并能结合游戏一些自身的属性进行针对性绕过及时发现对应风险,做到防患于未然



*转载请注明来自游戏安全实验室(GSLAB.QQ.COM)

来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-5-5 22:20 , Processed in 0.140625 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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