【环球新视野】逆向破解某APP的sign值校验

来源:哔哩哔哩时间:2023-02-22 11:04:11

什么是sign值?

可以理解为检验,每一个数据包中有sign值就意味着可以被检验,当我们一旦篡改数据,校验值不正确,则会失败。

0X01 体测APP


(资料图)

界面功能点如图:

手机装好https证书,挂好Burpsuite的代理,随后我们直接去抓取该APP上传校园跑步数据时的请求

将跑步距离0.000 修改为5.000时,直接提示认证失败,原因就是sign值的问题。

0X02 逆向破解Sign值的加密

首先判断sign是否有漏洞,看sign值是否采用了一些弱加密/编码方法(例如md5)

上一方法失败,随后我们尝试第二种方法,置空sign值,发现依然鉴权认证失败

0X03 逆向破解app

先查壳,运气不错,apk没加壳,省了不少功夫

全局搜素sign,在仔细挨个查看后,成功定位到了其sign生成的关键算法

其sign值的签名算法:创建一个链表, 将全部已有的参数加入进去, 然后再加上一些键值对(其中timestamp时间戳我们已知,

appID,appSecret两个键值对我们均未知),之后再将全部的键值对根据键的字母顺序进行排序, 之后使用 querystring 方式对键值对进行编码,最后再对编码后的字符串求 MD5 值

分析代码发现,appID获取:,如果请求的url是 https://m.xxxxx.com 则为move,否则调用getAppId方法,获取某接口openId的参数值,随后赋值给AppID。

appSceret获取:在jadx中提示appSecre键t对应的值来源于g.b,我们在import的包中成功找到了g.b(即appSecret)

现确定了所有参数的键值对,只需要写个脚本写出sign值即可

将原来的formatSportRange跑步距离改为了从0.000修改为5.003,并使用程序生成的sign值

大功告成,跑步记录保存成功,我们成功使用伪造的sign签名增加了一条5.003 km的跑步记录

标签: 大功告成 程序生成 原因就是

图文推荐

热门文字

标签

精彩赏析