吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9651|回复: 45
收起左侧

[Web逆向] 某店登陆加密参数 UA 加密逻辑分析

  [复制链接]
xianyucoder 发表于 2021-9-13 09:27

今日网站

aHR0cHM6Ly9kLndlaWRpYW4uY29tL3dlaWRpYW4tcGMvbG9naW4vIy8=

有两周没有更新,赶紧更新一波,希望不要像上次的视频一样浏览量翻车。

加密定位

输入账号密码,点击登陆,可以看到下面的请求

我们需要分析的参数是ua这个参数

直接通过Initiator第一个的位置先打上断点

重新提交一下,这个时候就会断住了

红框里的e里面已经包含了生成好的ua

所以继续往上一层堆栈查找,直到下面这个位置

可以看到i是由window.getUa()生成的

所以这个时候就只要把window.getUa()的逻辑搞出来就可以了

加密分析

跟进去看到的是 ob 混淆

这个 ob 比较简单,不用还原也可以分析这个加密,简单反混淆一下去掉类似_0x4651('0x440')这样的代码

通过上面的截图可以看到window.getUa()的逻辑是下面这一串

window["getUa"] = function () {
    var _0x7dfc34 = new Date()["getTime"]();

    if (_0x4a9622) {
        _0x2644f4();
    }

    _0x55b608();

    var _0x261229 = _0x1722c3(_0x2e98dd) + "|" + _0x1722c3(_0x420004) + "|" + _0x7dfc34["toString"](16);

    _0x261229 = btoa(_0x570bef["gzip"](_0x261229, {
        "to": "string"
    }));
    return _0x261229;
};

返回的值是_0x261229,所以只要这个值相关的逻辑就可以了

window["getUa"] = function () {
    var _0x7dfc34 = new Date()["getTime"]();
    var _0x261229 = _0x1722c3(_0x2e98dd) + "|" + _0x1722c3(_0x420004) + "|" + _0x7dfc34["toString"](16);
    _0x261229 = btoa(_0x570bef["gzip"](_0x261229, {
        "to": "string"
    }));
    return _0x261229;
};

由上面的代码可以得出以下结论

_0x7dfc34是当前的时间戳

_0x261229是由_0x1722c3(_0x2e98dd) + "|" + _0x1722c3(_0x420004) + "|" +时间戳拼接组成,最后返回的结果由前面的结果先压缩再经由btoa组成

这样分析我们发现目前未知的参数就只有 3 个,分别为_0x1722c3_0x2e98dd_0x420004

接下来回到网页上分析看看这三个参数的值

首先是_0x1722c3,这个是一个加密逻辑,不用管里面是什么,后面直接扣逻辑就行

然后是_0x2e98dd

这里面的参数是当前的环境参数,这里面包含了的系统字体,屏幕参数,电池状态,header、Navigtor等一系列的参数

其次是_0x420004

这里记录了鼠标数据,以及点击的数据

现在需要将上面的逻辑移到 node 中,这个比较简单

先扣_0x1722c3,这个函数非常简单,因为这个方法的代码就是一个个小方法体组成的直接一块块粘贴下来就行了

然后就是_0x2e98dd_0x420004这两个参数,第一个环境信息可以直接复制写死就行了,因为很多他并没有强校验这个参数的逻辑,很多获取的都是一些共有的属性。

第二个_0x420004这个参数是获取的鼠标轨迹信息,我是直接Math.random随机数向下取整,然后格式和他传参的格式相同,测了几次发现对于这个轨迹并没有强校验,洒洒水就过去了

这样的代码就可以得到下面的一串字符串了

然后我们在看接下来的一段

btoa(_0x570bef["gzip"](_0x261229, {"to": "string"}));

前面的btoa之前已经分享过代码了,直接去知乎那篇文章抄一个就可以了

_0x570bef["gzip"]又应该怎么获取呢?

其实_0x570bef["gzip"]也是扣就可以了,但是有可以直接偷懒的方法

因为是gzip压缩算法,所以我直接套库计算,不费工夫去扣代码了

这个文件我等会放到云盘

链接:https://pan.baidu.com/s/1v6FaDWP2sGdjWbRAcpfu-g
提取码:l2fi

获取压缩算法 js 文件和简单还原的 js

然后我写了一个zip方法直接得到下面的加密字符串

function zip(str) {
    var pako = require("./pako")
    const binaryString = pako.gzip(encodeURIComponent(str), {to: 'string'})
    return btoa(binaryString);
}

为了验证我们计算是否正确,直接带入脚本请求

完事~,以上就是今天的全部内容了,咱们下次再会~

免费评分

参与人数 11吾爱币 +13 热心值 +9 收起 理由
Da2001 + 1 + 1 用心讨论,共获提升!
a11040427 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
pelephone + 1 + 1 我很赞同!
ojo + 1 + 1 用心讨论,共获提升!
T_Tzzz + 1 我很赞同!
虚无空幻 + 2 + 1 等你下次分享tb的 最好出个视频学习学习
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
zhuzhuxia111 + 1 + 1 我很赞同!
qqww3815 + 1 用心讨论,共获提升!
trynewdream + 1 + 1 js压缩包解压密码多少呢
xia4166 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

mosou 发表于 2021-9-13 09:49
tb的getUa也分析下?
 楼主| xianyucoder 发表于 2021-9-13 10:33
moda 发表于 2021-9-13 09:58
都不知道有啥好分析的,看到H4sIAAAAA就知道是压缩后base64编码

好吧 大佬还是厉害 通过加密结果知道加密内容
zuxin521 发表于 2021-9-13 09:57
moda 发表于 2021-9-13 09:58
都不知道有啥好分析的,看到H4sIAAAAA就知道是压缩后base64编码
Light紫星 发表于 2021-9-13 10:23
不错不错,收藏了
 楼主| xianyucoder 发表于 2021-9-13 10:33
mosou 发表于 2021-9-13 09:49
tb的getUa也分析下?

下次一定
一朵小浪花 发表于 2021-9-13 10:58
厉害了!厉害了!厉害了!
头像被屏蔽
trynewdream 发表于 2021-9-13 11:56
  压缩包密码多少啊  老大
 楼主| xianyucoder 发表于 2021-9-13 12:15
trynewdream 发表于 2021-9-13 11:56
压缩包密码多少啊  老大

解压密码是 yyds
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 12:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表