声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

目标

目标网站

aHR0cHM6Ly9kLndlaWRpYW4uY29tL3dlaWRpYW4tcGMvbG9naW4=

目标

获取登录接口 UA 参数加密,UA参数经过了OB混淆加密

其他

**本文更新于2023/11/13 **

与之前版本不太一样的是增加了phone和password 以及CountryCode的加密。

ps: 上一次发的文章中有个错误。我的账号和密码加密没有添加公钥 导致请求失败。

还有的就是对ua的某些值的校验。

其他参数加密



如上图所示:除了ua是我们本文需要研究的。还有几个参数也是需要我们给逆向逆出来的。

分别为:

  • phone
  • countryCode
  • password
  • wdtoken

我们直接搜索 countryCode



如上图所示。这里就直接显示出了加密的位置。后面就一直跟栈一直扣就行了。很简单。



跟到这个地方。把这一整个JSEncrypt 文件保存下来。然后简单补两个环境。

具体代码如下:

JSEncrypt.js

window = global;
navigator={
appName:'Netscape'
}
...

login_encrypt.js

window = global;

var JSEncrypt =require("./JSEncrypt.js")
var v = new JSEncrypt() _encrypt = function (e) {
return e ? v.encrypt(e + "") : ""
} getCountryCode = function (e) {
return Number(e.split("-")[0])
} function encrypt_up(t){
return _encrypt(t)
} function encrypt_CountryCode(){
return _encrypt(getCountryCode("86-Z"))
} // i = window.getUa()
// phone = _encrypt(17772231096)
// countryCode = _encrypt(getCountryCode("86-Z"))
// password = _encrypt("1323123213")
//
// console.log(phone,countryCode,password)

至于wdtoken

其实是通过某个请求set_cookie得来的。

抓包分析

研究完其他参数。我们可以来搞UA了。

在刚刚的抓包过程中。我们已经找到了加密位置。



可以看到 ua加密赋值给了i 。i最后再通过URL编码。得到了网页上呈现的UA。

进栈之后



可以看到 这就是个标准的OB混淆啊。至于什么是OB混淆,自己搜搜资料。这里贴一个官网地址: https://obfuscator.io/#upload

简单来说就是一个免费且高效的 JavaScript 混淆器。使代码更难复制,并防止其他人窃取代码。

可以通过AST的方式。或者是工具的方法去给解混淆。

这里我通过

https://tool.yuanrenxue.cn/decode_obfuscator

模式2 的方式去解混淆。

代码分析

解混淆后的主要代码如下



确实到这边已经一目了然了。

这里简单来看看 _0x2e98dd 和 _0x420004

_0x2e98dd:



_0x420004:



如此一来。可以得到一下如此结论

UA参数由三部分组成。最后通过gzip压缩然后btoa(base64)加密。

  1. _0x7dfc34 这个值很简单。通过JS生成的时间戳
  2. _0x1722c3(_0x2e98dd) 这部分是浏览器的环境代码
  3. _0x1722c3(_0x420004) 这部分是鼠标轨迹以及一些是否点击的鼠标环境。
  4. 最后通过gzip压缩 然后base64 加密。
var _0x261229 = _0x1722c3(_0x2e98dd) + "|" + _0x1722c3(_0x420004) + "|" + _0x7dfc34["toString"](16);

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

参数分析

这里扣代码其实很简单。因为已经脱混淆了。缺什么补什么就行了

这里需要注意的是最后通过zip压缩 然后base64加密的那部分函数代码。

这里可以通过两种方法去补全。

  1. 扣代码(最稳定且最容易出正确结果的)
  2. 因为是gzip压缩算法,可以直接套库。

代码

我们把所有值带入



诶 发现为什么是参数错误呢?

哦我的天哪。好像并没有看上去那么简单。经过我无间断的测试。我发现ua确实是没问题的。

而真正出问题的是 phone 和password 这个rsa加密。

我们网上去找。

按步骤去跟栈 最后发现在初始化V的时候。还有个地方设置了个公钥。我并没有发现。所以导致请求的时候 老是参数错误。



设置完公钥后。重新请求。

然后就可以了。搞的时候感觉很难。真正写出来。感觉好简单。。。





可以关注我的微信公众号。

某些文章,核心代码,以及提前更新都在微信公众号上。

JS逆向实战26——某店ua模拟登陆的更多相关文章

  1. JS逆向实战12——某店 captchaToken 参数 加密

    今天爬取的是网站需要模拟登陆 目标网站 aHR0cHM6Ly9wYXNzcG9ydC55aGQuY29tL3Bhc3Nwb3J0L2xvZ2luX2lucHV0LmRv 浏览器抓包分析 随便输入一堆假 ...

  2. JS逆向实战4--cookie——__jsl_clearance_s 生成

    分析 网站返回状态码521,从浏览器抓包来看,浏览器一共对此地址请求了三次(中间是设置cookie的过程): 第一次请求:网站返回的响应状态码为 521,响应返回的为经过 混淆的 JS 代码:但是这些 ...

  3. JS逆向实战3——AESCBC 模式解密

    爬取某省公共资源交易中心 通过抓包数据可知 这个data是我们所需要的数据,但是已经通过加密隐藏起来了 分析 首先这是个json文件,我们可以用请求参数一个一个搜 但是由于我们已经知道了这是个json ...

  4. JS逆向实战13——某市公共资源交易中心Cookie混淆加密

    "本文地址:https://www.cnblogs.com/zichliang/p/17346860.html 目标网站 aHR0cDovL2xkZ2d6eS5obmxvdWRpLmdvdi ...

  5. JS逆向实战8——某网实战(基于golang-colly)

    其实本章算不上逆向教程 只是介绍golang的colly框架而已 列表页分析 根据关键字搜索 通过抓包分析可知 下一页所请求的参数如下 上图标红的代表所需参数 所以其实我们真正需要的也就是Search ...

  6. JS逆向实战7-- 某省在线审批网站params 随机生成

    参数分析 我们首先通过抓包 发现这个就是我们所需要的数据 然后我们通过fidder 发起请求 结果: 通过我们反复测试 发现这个params的参数是每次请求中都会变化的 断点查找 我们通过 这个t参数 ...

  7. JS逆向实战6-- x轴 y轴 过点触验证码

    点触验证码是一种常见的反爬手段 解决方案有两种:一种是直接解决,这需要深度学习机器学习等图像处理技术,以大量的数据训练识别模型,最终达到模型足矣识别图片中的文字提示和应该点击的区域之间的对应关系. 这 ...

  8. JS逆向实战5--JWT TOKEN x_sign参数

    什么是JWT JWT(JSON WEB TOKEN):JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体之间安全传输信息(JSON格式).它是在Web环境下 ...

  9. JS逆向实战2--cookie-AcwScV2加密—某招标信息网

    cookies的获取 首先拿到第一次访问原链接 拿到acw_tc的值,然后放到session中去 再用这个session再次访问原链接拿到js加载的加密的真实数据.用了一些反混淆. 最后获取这个数据中 ...

  10. JS逆向实战1——某省阳光采购服务平台

    分析 其实这个网站基本没有用到过什么逆向,就是简单的图片base64加密 然后把连接变成2进制存成文件 然后用ocr去识别即可 !! 注意 在获取图片连接 和对列表页发起请求时一定要用一个请求,也就是 ...

随机推荐

  1. Flutter状态管理-FlyingRedux

    简介 Flying Redux 是一个基于Redux状态管理的组装式flutter应用框架. 它有四个特性: 函数式编程 可预测的状态 插拔式的组件化 支持null safety 和 flutter ...

  2. React:如何在普通函数中使用Hook

    解决方案

  3. 记一次线上问题 → Deadlock 的分析与优化

    开心一刻 今天女朋友很生气 女朋友:我发现你们男的,都挺单纯的 我:这话怎么说 女朋友:脑袋里就只想三件事,搞钱,跟谁喝点,还有这娘们真好看 我:你错了,其实我们男人吧,每天只合计一件事 女朋友:啥事 ...

  4. Oracle 11gR2 单实例 For linux6

    第一章         准备工作 1.1   系统硬件和软件环境检查 Ø  物理内存至少1G # grep MemTotal /proc/meminfo Ø  swap物理内存小于2G时设置为物理内存 ...

  5. JSONP前端流程

    JSONP前端流程 JSONP总体思路 后端先给前端一个接口文档. 如https://www.baidu.com/sugrec?prod=pc&wd=用户输入的文字&cb=后端要调用的 ...

  6. chrome浏览器中使用adblockplus拦截广告

    adblock plus是一款可以屏蔽广告以及任何你想屏蔽元素的软件,屏蔽之后的效果如下图所示,abp自动屏蔽广告,还可以自行添加屏蔽内容,右上角红色的ABP标识就是该软件     下载地址: htt ...

  7. Nep2023的wp

    0x00 闲言碎语 2023.8.14 记录11-13的紧张刺激.46名结赛. 非常高兴能够参加NepCTF2023,以一个初出茅庐的新人的身份参加.ctf的乐趣在于学习和探索,同时我也有想证明自己的 ...

  8. Android源码-生成系统签名文件

    一.生成keystore签名文件 android 源码目录build\target\product\security 取platform.pk8 platform.x509.pem放到一个目录下 生成 ...

  9. Harry Potter RPG_1

    RPG--Harry Potter 博主最近迷上了<Harry Potter> So 我制作了一款RPG对话模拟游戏, 目前主线以进行到了分院以后: 有兴趣的小伙伴可以看看,能点个关注就更 ...

  10. 解锁Java面试中的锁:深入了解不同类型的锁和它们的用途

    简介 多线程编程在现代软件开发中扮演着至关重要的角色.它使我们能够有效地利用多核处理器和提高应用程序的性能.然而,多线程编程也伴随着一系列挑战,其中最重要的之一就是处理共享资源的线程安全性.在这个领域 ...