【JavaScript 逆向】抖店滑块逆向分析

news2024/11/17 21:21:59

声明

本文章中所有内容仅供学习交流,相关链接做了脱敏处理,若有侵权,请联系我立即删除!

案例目标

接口:

aHR0cHM6Ly93d3cuZG91eWluLmNvbS9hd2VtZS92MS93ZWIvdXNlci9wcm9maWxlL290aGVyLw==

以上均做了脱敏处理,Base64 编码及解码方式:

import base64
# 编码
# result = base64.b64encode('待编码字符串'.encode('utf-8'))
# 解码
result = base64.b64decode('待解码字符串'.encode('utf-8'))
print(result)

案例分析

抓包

输入手机号,点击发送验证码,即会弹出滑块验证:

  /captcha/get 接口返回滑块及缺口背景图 url,其他返回值也在轨迹中,tip_y 即轨迹中 的值: 

请求参数 detail 在 /v2/?msToken=&X-Bogus= 接口的返回值中,fp 生成算法如下:

function getFp() {
    var e = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split("")
      , t = e.length
      , n = (new Date).getTime().toString(36)
      , r = [];

    r[8] = r[13] = r[18] = r[23] = "_",
    r[14] = "4";
    for (var o, i = 0; i < 36; i++)
        r[i] || (o = 0 | Math.random() * t,
        r[i] = e[19 == i ? 3 & o | 8 : o]);
    return "verify_" + n + "_" + r.join("")
}

/captcha/verify 即验证接口,fp、detail 是一样的,server_sdk_env 经过 url 编码,captchaBody 是需要逆向的关键参数,里面包含鼠标轨迹、滑动轨迹、AES(GCM)、base64、SHA512 加密等等:

逆向分析

直接从验证接口的堆栈中跟到 captcha.js 文件中,和 X-Bogus 参数的 webmssdk.es5.js 文件解混淆后的样子很像,同样也是 jsvmp,如果做过 X-Bogus 参数逆向的,对这个应该很熟悉,但 captchaBody 的生成逻辑不像 X-Bogus,插桩之后一步步的很清晰,是需要结合单步慢慢跟的,同时以下这部分在整个 js 中类似的 7 个,插桩很容易插错地方,整个流程也并不是只在一个里面进行,是需要注意的:

通过 webpack 导出补环境也是可以的,不过这里还是扣算法:

关键点插桩,能看到可能使用过 AES 加密,箭头指的都是需要注意的,异步 crypto.subtle.importkey() 方法:

打断点跟栈,要清缓存:

m[0] 即各种轨迹,captchaBody 校验的轨迹很多: 

 w[_] = E(m) 也是个关键位置,很多方法都能从这里单步向后跟找到:

 例如此时的轨迹被转成了字符串,算法位置单步向后跟即可找到:

一步步跟就会看到以下几个关键位置:

数组拼接:

SHA512 算法加密了很多点,比如一开始的轨迹、随机字符串等等,可以直接引库:

随机字符串:

AES 加密模式为 GCM:

结果验证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/463487.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

某应用虚拟化系统远程代码执行

漏洞简介 微步在线漏洞团队通过“X漏洞奖励计划”获取到瑞友天翼应用虚拟化系统远程代码执行漏洞情报(0day)&#xff0c;攻击者可以通过该漏洞执行任意代码&#xff0c;导致系统被攻击与控制。瑞友天翼应用虚拟化系统是基于服务器计算架构的应用虚拟化平台&#xff0c;它将用户…

项目管理-团队管理

冲突和竞争 冲突&#xff1a;是指两个或两个以上的社会单元在目标上互不相容或互相排斥&#xff0c;从而产生心理上的或行为上的矛盾。冲突并不一定是有害的&#xff0c; “一团和气”的集体不一定是一个高效率的集体。对于有害的冲突要设法加以解决或减少&#xff1b;对有益的…

【远程工具】- WindTerm 下载、安装、使用、配置【Telnet/ssh/Serial】-免安装、解压即用

目录 一、WindTerm 概述 二、WindTerm 下载、安装 三、WindTerm 的使用  &#x1f449;3.1 使用SSH协议连接Linux开发主机  &#x1f449;3.2 使用Telnet协议连接开发板  &#x1f449;3.3 使用Serial(串口)协议连接开发板 一、WindTerm 概述 在远程终端工具中&#xff0c;s…

SCI论文自由投稿Vs专栏投稿,哪个更好中?

我们首先来看下以下几种期刊的发表方式&#xff1a; 正刊 正刊也就是自由投稿方式的发表方式&#xff0c;是期刊正常出版的期刊&#xff0c;比如一本SCI期刊是双月刊&#xff0c;一年出版6期&#xff0c;没有设定主题&#xff0c;包含多个研究方向的文章。每年按照半月/月/双…

Linux:《gzip》《bzip2》压缩解压

先准备4个文件 1.文件压缩 使用gzip和bzip进行压缩 gzip text1.txt 使用gzip对text1.txt压缩 gzip -9 text2.txt -9是高压缩 由于我使用的文件太小了&#xff0c;所以体现不出来 bzip2 text3.txt 使用bzip2对text3.txt压缩 bzip2 -9 text4.txt -9同样是bzip2的高压缩 2.解压文件…

Java版spring cloud 企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

【MySQL高级】——逻辑架构

一、服务器处理请求流程 连接层&#xff1a;客户端和服务器端建立连接&#xff0c;客户端发送 SQL 至服务器端&#xff1b;SQL 层&#xff08;服务层&#xff09;&#xff1a;对 SQL 语句进行查询处理&#xff1b;与数据库文件的存储方式无关&#xff1b;存储引擎层&#xff1a…

kubernetes为何需要默认的serviceaccount?

文章目录 什么是k8s的serviceAccount&#xff1f;为什么每一个ns下都有默认的sa&#xff1f;default sa yaml 默认的sa下都会挂一个secret&#xff0c;这个secret是从哪里来的&#xff1f;一道关于RBAC的CKA考题1、创建一个新的 ServiceAccount2、创建一个新的 Role3、创建一个…

ChatGPT测试-吴彦祖帅不帅

GPT3.5 我是一个xxx职业&#xff0c;女性&#xff0c;平常喜欢xxxx&#xff0c;喜欢类似 xxx&#xff0c;肖战&#xff0c;王一博&#xff0c;一类的男明星&#xff0c;对于我这种女生来说的话&#xff0c;这种审美方向&#xff0c;吴彦祖帅不帅&#xff0c;请给我具体回答&…

免费ChatGPT接入网站-网站加入CHATGPT自动生成关键词文章排名

网站怎么接入chatGPT 要将ChatGPT集成到您的网站中&#xff0c;需要进行以下步骤&#xff1a; 注册一个OpenAI账户&#xff1a;访问OpenAI网站并创建一个账户。这将提供访问API密钥所需的身份验证凭据。 获取API密钥&#xff1a;在您的OpenAI控制台中&#xff0c;您可以找到您…

国赛超强自学素材!飞桨系列国赛课程集锦发布

自2023年3月以来&#xff0c;飞桨在“中国软件杯”大学生软件设计大赛和全国大学生智能汽车竞赛两大赛事中&#xff0c;陆续发布了六项赛题。我们整理了一份当前阶段的竞赛培训课程合集&#xff0c;为同学们的学习和备赛保驾护航&#xff01;出发的号角已然吹响&#xff0c;欢迎…

AODV路由算法在无线传感器网络中的设计与仿真(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 此代码用于MATLAB GUI&#xff0c;其中为WSN实现了AODV路由协议。源节点每次都会随着数据包的数量而变化。GUI的快照已附加。它…

Qt5下Qxlsx模块安装及使用

Qt5下Qxlsx模块安装及使用 1. 未安装Qxlsx的程序效果2. 安装Perl&#xff08;编译Qxlsx源码用&#xff09;2.1 下载 ActivePerl 5.282.2 安装 ActivePerl 5.28 3. 下载并编译Qxlsx源码3.1 下载Qxlsx源码3.2 编译Qxlsx源码 4. 将编译好的文件复制到Qt路径下4.1 bin 路径文件复制…

git报错处理:ssh:connect to host github.com port 22: Connection timed out

一、背景 git 在上传、下载 文件的时候&#xff0c;报错。 报错信息&#xff1a; ssh:connect to host github.com port 22: Connection timed out 提示这个域名github.com port 的22 端口&#xff0c;链接超时。 我直接访问github.com 这个域名是可以访问的&#xff0c;pi…

python+vue 风俗文化管理系统

管理员可以根据系统给定的账号进行登录&#xff0c;登录后可以进入风俗文化管理系统对风俗文化管理所有模块进行管理。包括查看和修改自己的个人信息以及登录密码&#xff0c;用户信息等。 用户通过注册账号的登录可以在系统中查看风俗文化管理信息及对个人信息进行修改等功能。…

华为OD机试(JAVA)真题 2023(汽水瓶\随机数\进制转换)

系列文章目录 文章目录 系列文章目录前言一、 1.汽水瓶二 明明的随机数 前言 一、 1.汽水瓶 某商店规定&#xff1a;三个空汽水瓶可以换一瓶汽水&#xff0c;允许向老板借空汽水瓶&#xff08;但是必须要归还&#xff09;。 小张手上有n个空汽水瓶&#xff0c;她想知道自己最多…

git版本本地远程分支管理测试

只为搞清楚一些基本的git的本地提交、分支&#xff0c;远程分支的概念。 创建git库。 在本地首次建立一个001文件&#xff0c;首次提交到本地master&#xff0c;不提交&#xff08;push&#xff09;到远程master&#xff08;gitee&#xff09;。 add 增加001文件到库。 Git-co…

【UML建模】状态图(State Machine Diagram)

文章目录 1.概述2. 状态图的使用2.1.状态图中的元素2.2.状态图的使用案例2.3.组合状态及其使用案例 3.总结 1.概述 状态图&#xff0c;又称为状态机图&#xff0c;是一种用于描述对象的生命周期和状态转换的UML图示&#xff0c;它是一种行为图&#xff0c;用于描述对象的状态和…

Django 4.2发布,主要变化小结!

2023年4月&#xff0c;Django 4.2正式发布&#xff0c;此版本已被指定为长期支持 (LTS) 版本&#xff0c;发布3年后都会收到安全更新&#xff0c;将成为未来3年的主流版本。今天就来一起看看新版本有哪些变化吧&#xff1f; Python 兼容性 Django 4.2 支持 Python 3.8、3.9、3.…

Golang Gin 局部、全局 中间件使用

中间件 中间件是放在客户端和服务端的中间。 当你的客户端对某个接口发起一个请求&#xff0c;但是在到达接口2之前&#xff0c;这里是有一层中间件的处理。 一般常用的就是处理跨域&#xff0c;比如处理登入的验证token&#xff0c;接口返回的信息比较敏感&#xff0c;说白…