今日目标
aHR0cHM6Ly9hcHBtYXRjaC55dWFucmVueHVlLmNvbQ==
这次比赛果然是神仙打架,先是珍惜哥哥沙箱乱杀,然后是各路大佬神仙过招,我这菜鸡只能仰望了。
虽然没有参加,不过还是借了账号写写文章,瞻仰下各路大佬的风采(简称蹭蹭流量)
抓包分析
进入 App 第一题之后,可以抓到一下两个包,分别是time
和app1
time
包返回时间戳
app1
包返回页面上的数字
主要看app1
包的请求
除了time
和page
之外还多了一个sign
字段
这个sign
就是分析的重点
加密定位与算法还原思路
取巧的方法
直接搜索关键词第一题
直接跳到第一题的的逻辑里
然后可以看到sign
的逻辑
直接点进sign
看方法
用frida hook
看看参数和结果
console.log("脚本加载成功"); function main(){ Java.perform(function() { var clazz = Java.use('com.yuanrenxue.match2022.security.Sign'); clazz.sign.implementation = function() { console.log('find sign <======>'); console.log("arguments 0 <======>",JSON.stringify(arguments[0])) console.log("result <======>",clazz.sign.apply(this, arguments)); return clazz.sign.apply(this, arguments); } }); } setImmediate(main)
这个时候已知入参为
具体的组成page=[page num]+time
再进入sign
看下加密的逻辑
这就是sign
的逻辑,其实就可以进行缺啥补啥了,扣出来java
的代码,然后用python
调用就行
这个是最方便快捷的,但是可能会卡在下面这个点
这里的OooO00o.OooO00o(-592855683721616730L)
是个啥,跟进去看下
搁着套娃呢?
这要是扣岂不是人没了?
不过既然代码都找出来了,直接hook
不就完事了呗。
hook 结果这里就是不变的,所以不用扣,直接固定%02x%02x%02x%02x就完事了
如果不会写,可以用jadx 1.3.5
右键自动生成并复制frida
片段
虽然说有时候会有一些小问题,但是cv
起来很是丝滑
End.
以上就是全部的内容了,咱们下次再会~