某画师的登陆协议分析
本帖最后由 q6378561 于 2022-5-21 20:55 编辑# 前言
由于某画师的登录接口有加密 故此分析
网址: aHR0cHM6Ly9taWh1YXNoaS5jb20=
# 尝试
登录的api:/api/v1/authorization_tokens/
cookie:
![](https://i.imgur.com/Mfz2isN.png)
表单数据:
![](https://i.imgur.com/l11ClGr.png)
# 目标
> 可以看到`phone`和`password`都为明文, 但接口的cookie和表单的`sensor_id`数据进行了加密
> 下面进行分析
# 分析
## 表单分析
1.首先ctrl+shift+f全局搜索`sensor_id`字符串
![](https://i.imgur.com/OFcNeEp.png)
搜索不到,说明字符串被加密了,只能另寻出路
来到api的Initiator地方追踪调用
![](https://i.imgur.com/cbfTaK0.png)
通过一系列翻阅在从上往上数第10个调用发现异常
![](https://i.imgur.com/vegoZR4.png)
我们需要的是`sensor_id`但这里有个
`sensorId: sensors.store.getDistinctId()`
很有可能就是同一个东西,下个断点看看
![](https://i.imgur.com/82Y1RrU.png)
通过发包后看看:
![](https://i.imgur.com/e9l1kzW.png)
可以看到是相同的,说明是从这个函数生成的
通过全局搜索
![](https://i.imgur.com/TzMtL4w.png)
然后再通过全局搜索找到关键函数
![](https://i.imgur.com/q3qFFn2.png)
可以得出`UUID()`就是生成最初的`sensor_id`参数
搜索可得uuid的生成函数
```ts
_.UUID = function() {
var t = function() {
for (var t = 1 * new Date, e = 0; t == 1 * new Date; )
e++;
return t.toString(16) + e.toString(16)
}
, e = function() {
return Math.random().toString(16).replace(".", "")
}
, n = function(t) {
function e(t, e) {
var n, r = 0;
for (n = 0; n < e.length; n++)
r |= o << 8 * n;
return t ^ r
}
var n, r, i = navigator.userAgent, o = [], a = 0;
for (n = 0; n < i.length; n++)
r = i.charCodeAt(n),
o.unshift(255 & r),
o.length >= 4 && (a = e(a, o),
o = []);
return o.length > 0 && (a = e(a, o)),
a.toString(16)
};
return function() {
var r = String(screen.height * screen.width);
r = r && /\d{5,}/.test(r) ? r.toString(16) : String(31242 * Math.random()).replace(".", "").slice(0, 8);
var i = t() + "-" + e() + "-" + n() + "-" + r + "-" + t();
return i ? (just_test_distinctid_2 = 1,
i) : (just_test_distinctid_2 = 2,
(String(Math.random()) + String(Math.random()) + String(Math.random())).slice(2, 15))
}
}
```
可以看到`uuid`的生成函数也十分简单 参数也十分固定 我们可以通过JS调用或者自写代码实现函数功能,为了节约时间这里直接采用JS调用的方式
有三个参数我们可以采用写死的方式来直接进行调用
`var r = String(screen.height * screen.width);`
`var n, r, i = navigator.userAgent, o = [], a = 0;`
改写为
`var n, r, i = "\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36\"", o = [], a = 0;`
`var r = String(864*1536);`
在本地调用看看
![](https://i.imgur.com/KlWfscQ.png)
可以看到是没有任何问题的
这样表单的分析就完成了
## cookie分析
可以看到有四个cookie
分别是
`aliyungf_tc`
`__asc`
`__auc`
`sensorsdata2015jssdkcross`
### aliyungf_tc
第一个`aliyungf_tc`通过调试发现访问网页后网页会自动返回给你这个cookie,保存即可
### asc和auc
全局搜索`__asc`发现如下关键函数
![](https://i.imgur.com/ZMvM6V7.png)
简单往上追踪就能得到
![](https://i.imgur.com/k85kUTr.png)
由于asc和auc的参数相同所以调用同一个即可
### sensorsdata2015jssdkcross
可以发现`sensorsdata2015jssdkcross`这个cookie里面包含了`sensor_id`的参数
说明我们也可以通过cookie角度来获取`sensor_id`这个参数生成
全局搜索`sensorsdata2015jssdkcross`可以获取相关的生成信息,这里不做过多的详细说明
# 结束
这样某米的登录分析就这样大致结束了 后面只要添加cookie添加表单数据模拟post访问登录即可
![](https://i.imgur.com/mc51Mmw.png)
至此登录分析就告一段落了 感谢分享,图是不是挂了
学下强身
页:
[1]