在闲鱼上发现了一个app,将盗版游戏卖20元,但是我看里面的截图和标题是和游戏年轮一样子的,于是我准备看看里面的资源是啥样子的
抓包
首先我们利用fiddle4进行抓包
可以看到首页请求列表在body中之传入了一个值:captcha=xxxxx
显然只有这一串经过加密的字符串作为参数传入后台
分析
首先这个字符串很扎眼的就是%3D之类的字符,于是我猜测他很像urlEncode之后的编码
在经过urlDecode解码之后我又获得了一串编码
这个编码以=号结尾又很像base64加密
于是再次进行解密
哦吼!
这个后台用的是php,但是不会php,首先我还是第一次看到把sql语句直接通过前端传入后端,3306mysql数据库的端口 ziyuanku这个很像表名,后面的id>xxx应该就是sql语句 where的判断条件,知道这个就好搞了
sql注入
这时候我登录app需要输入手机号和买来的激活码,继续抓包,抓到了查询yayuliao的表名,这肯定是和激活码有关的表 直接sql注入,然后base64和urlencode加密,传入原来的接口中进行请求
于是我们查到了这张表所有的数据
输入完手机号和激活码之后发现可以无限制的使用了,这时候还没完,我想把他所有的游戏网盘资源全部扒下来
脱库
继续抓包,发现了一个神奇的事我想多了,我以为这个资源在另外一个表中,但是他还是一个表
再经过解密之后得到的是
MSDATA120.25.225.69:3306|*||*||*|ziyuanku|*|utf8|*|QrData|*|ns便捷||游戏标题,网盘链接,网盘码|\|%like\<xxxx\>%
这种神奇的语法我第一次见到,但是我想'|游戏标题,网盘链接,网盘码|'这个该不会是中文的字段名把,换成*号试试看
果然是这样!所有的字段都出来了,但是这种也太难看了把,为什么不用json呢
格式化文本
这时候我们获得了这么多数据,但是全是各种字符弄成的,我想把他导入数据库用json还是方便的
const fs = require("fs");
let data = fs.readFileSync('origin.txt');
let originStr = data.toString()
let originList = []
let originList2 = []
let finalJson = []
originList = originStr.split('|.*.|')
originList.forEach(item => {
originList2.push(item.split('|.+.|'))
})
originList2.forEach(item => {
let param = {
class: item[1],
img: item[2],
title: item[3],
url: item[4],
password: item[5]
}
finalJson.push(param)
})
let str = JSON.stringify(finalJson,null,"\t")
fs.writeFile('final.json', str, function(err) {
if (err) { res.status(500).send('Server is error...') }
})
嗯,用nodejs把这个简单的转换一下吧
还是json看的舒服
免费资源
最后一步就是导入数据库
有2995个游戏哦
接下来我会做一个免费查询的网站给大家免费使用