最近在玩儿一款氪金手游, 但无奈太穷氪不起, 只有另辟蹊径, 研究一下有没有漏洞.

一般来说, 这类手游改本地apk都没什么效果的, 但还是抱着侥幸心理修改了apk里面的支付宝验证, 让其永远返回成功, 果然, 失败了…

然后想起了抓包改支付金额的老套路, 也侥幸的试了一下, 依然失败.

但这并不能阻挡我想要变强的想法, 打开fiddler, 打开系统设置 – WIFI, 设置上代理, 开始抓包.

把游戏里的功能都点了一边之后, 发现只有登录界面有几个是http传输的, 进入游戏后全是socket连接, fiddler毫无反应(抓不到)

于是就先测那几个http连接, 居然发现了盲注, 放到sqlmap上跑, 结果被waf封了ip…

换了ip后, 想着手动测一下找找规则, 发现waf怎么也不拦, 但是一用sqlmap, 立马封ip, 简单截了一下封ip时sqlmap发送的数据, 发现都是一些比较奇怪的测试数据, 用了skip-waf等参数后还是会被拦, 所以干脆自己写脚本, 写好之后执行了几个命令发现是dba权限, 顿时觉得这是一个大洞, 我终于要变强了…

你以为我要改自己的数据吗? 怎么会, 作为一个白帽子, 当然是联系厂商提交漏洞合法换奖励了.

由于是过年放假, 客服估计也不上班, 我等了两天终于找到了真人客服, 说明了各种危害后把脚本给了他, 还特意写上了注释和实例, 然后坐等大奖.

客服mm的态度也很好, 说已经转交给开发部的同学, 稍后会给我奖励.

果然, 两个小时后收到了奖励邮件, 我本以为是什么永久VIP, 永久月卡 18888钻石之类的, 点开一看, 嚯, 1000钻石….

这不是最气的, 最气的是, 官方还群发了一个邮件, 说系统有bug, 临时维护, 暂时无法登录, 为了补偿大家每人送500钻石…

想当年挖300英雄的洞, 新闻站getshell, 不涉及游戏数据库, 还给了我3k RMB的限额, 让我任选装备, 甚至说要给我做一个专属装备. 这个手游的sql权限都能删库了, 就给了1000钻石…

这依然不能阻挡我想要变强的信念, 我想到了之前没拦到的socket包, 准备从这里下手.


抓包

由于之前在WIFI中设置的是HTTP代理, 所以手机也只会代理所有的HTTP的请求, 不会代理socket, 要想解决这个问题, 就需要一个全局性的代理 , 比如vpn、shadowsocks.

但是即使使用全局代理, 也需要在自己的电脑上额外搭建一个代理服务(ccproxy), 然后用wpe之类的工具去抓包, 或者在转发流量到fiddler监听的端口上, 很繁琐.

还好, 今天发现了一款神器: Drony, 是一款手机软件, 安卓苹果都有, 它可以让你设置一个代理服务器, 然后在本机建立一个vpn, 把所有直接转发到你设置的代理服务器上(无论是wifi或是蜂窝数据都可以代理).

下载地址: https://play.google.com/store/apps/details?id=org.sandroproxy.drony&hl=en

1.png

用法也很简单, 点击SETTINGS面板中的Wi-Fi, 在弹出的列表页中选中你要设置代理的wifi,

2.png

Hostname填入代理服务器ip, Port填入端口, 启动即可

3.png

然后就可以抓取sockets包了

改包

fiddler并没有提供修改websocket数据包的界面, 但是可以通过脚本来自动替换, 这样正合我意, 因为这样不会因为拦截的延迟过长而导致游戏掉线

脚本很简单, 只需要在Handlers类中加入一个事件即可, 例:

static function OnWebSocketMessage(oMsg: WebSocketMessage) {

// Log Message to the LOG tab
FiddlerApplication.Log.LogString(oMsg.ToString());
var sPayload = oMsg.PayloadAsString();
if (sPayload.Contains(‘目标文本’)) {
oMsg.SetPayload(sPayload.Replace(‘目标文本’, ‘替换文本’);
}

}

这里只举一个简单的例子让大家了解一下, 更多用法可以参考:

如果觉得我的文章对你有用,请随意赞赏