js取字符串后四位_JS逆向 | 某验滑块加密参数逆向分析

声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!

aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5odG1s

抓包分析,看到一个加密参数w,全局搜索加密字段找不到可疑信息,同时又不是XHR所以无法下断点,  那该怎么定位?

e7f78bb6639327227c52e94671f8b742.png

通过Initiator可以看到与该请求有关的一个js文件,我们点进去看看。
6e2132df4ac703c69507f5fd5b3e9b97.png

怪不得搜不到相关信息,我们用 beautifier.io 美化一下代码,然后放到编辑器里再搜索看看。
1de92154af26241ba243bf69033cafb1.png

很快找到关键位置,可以看到,w值是 u + s , u值与a值有关,a值与o有关,o 中 userresponse、imgload、ep 不清楚是什么,我们分别在几个位置下断点。
90f70a3435c5d81af2dee4a32cd96264.png

拖动滑块停在断点处,暂不关心传入的三个参数是什么,先来看看userresponse是如何生成的。
6583403399d946acb9ec757a2d3a1b1f.png

在控制台查看相关信息,发现第二个参数challenge的值,我们只需要抠取$_CFO函数就行了。
3705f359fca5a38e612fbc6f70938dbd.png

抠取的过程写教程比较麻烦,不会抠取的平时还需要多加练习,一波操作之后,userresponse搞定了。
73594a4a222078559f714d5163fd75ec.png

接下来看看 imgload 是什么,从字面来看,图片加载?多次调试会发现该值是变化的,暂时不知道是什么东西,或许对参数生成没啥影响呢?继续往下看。
42d26aea2a94ebd49ecde4fbd8f37348.png

ep的值好像是一堆时间戳,可不可以模拟一下呢?继续往下看。
4cf5bb95b58a705dedb38693e44fe95e.png

$_DDQ函数传入的是一个字符串,由三部分拼接组成,第一部分多次测试发现应该是个定值,第二部分是取了challenge的前32个字符,后面一部分是o中passtime的值,而passtime的值又是传入的参数n的值。下面抠取函数运行看看。
2b2033514626d41a1aef5aff4eeea53f.png

可以看到结果与上图控制台输出的一致,rp的值搞定了,我们继续调试看看s值是如何生成的。
cc41dac417c0d5614a16530e2a2dbaea.png

我们找到了s的关键加密位置,new RSAKey().encrypt对一个字符串进行了加密操作, 字符串是通过调用某个函数生成的,继续调试,找到相关的信息进行抠取。
88499e372567f87998387a1f3a9c09d1.png

不错,s值出来了,继续往下看。
32867fa954976f955bd6dd0e9f289011.png

AES加密?没有进行测试,暂时选择抠取,把AES先抠取出来,然后我们看到gjson.stringify,不知道对o做了什么,控制台输出一下,跟JSON.stringify的结果一样,那我们是不是可以省掉这部分代码的抠取呢?新手的话不要偷懒。第二个参数其实就是前面提到的RSAKey所加密的字符串。自己跟进去看看就知道了。继续往下看。
88e6669c923dfa5ad05f11bf26245b62.png

对a的值进行Base64处理,我们直接抠取它的Base64就行了。接下来要做的就是看看我们抠取的w值生成算法是否有效。
c01340b15255ec03eff4eb51387b9356.png

获取新的滑块,拖动滑块停到断点处。我们只需要拿下面的四个值就可以测试。
b33d85c8b5b4539469535a454a3e768d.png

这样是不是成功了? 那么剩下的任务就是分析传入的三个参数t、e、n到底是什么?
35f5de0bbba7b0248962648c71e3a981.png

观察调用栈,找到相关位置下断点。这里重点讲讲l值是如何生成的。大概知道往一个函数里传入了三个参数。第二和第三个参数是前面请求得来的,这个你们自己抓包去看,我们看看第一个参数是怎么生成的。
24c2115e07e26e364a5f656333849aba.png
这个是不是滑动轨迹呢?我们可以把加密代码抠取出来,拿这个轨迹测试看看。
ae5bd4daaefa774bc501b03bb3d3e4d3.png

不错,结果是一样的!
dc436d4691b793f951139478ef63cefd.png

知道了里面的三个参数值是怎么来的,接下来我们需要抠取这个函数,然后拿这三个值测试看看。
8148248924c9c36dc55bc64f7b39982f.png

结果是一致的。新年第一篇教程就到这里了。祝各位朋友新年行大运,发大财!
c3951cdacb86a960c3d3f4c01c69a643.png
如果觉得教程不错,帮忙分享转发或者打赏鼓励,谢谢!

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

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

相关文章

谨防代理木马和怕米释放有毒程序

江民今日提醒您注意:在今天的病毒中Trojan/PSW.Agent.ann“代理木马”变种ann和TrojanDropper.Psyme.gke“怕米”变种gke值得关注。 英文名称:Trojan/PSW.Agent.ann中文名称:“代理木马”变种ann病毒长度:243200字节病毒类型&…

[python] 命令行模式下出现cp65001异常

问题 在命令行模式下有时会提示cp65001异常,很显然是命令行编码和python环境编码不匹配。 解决 切换命令行编码 unknown encoding: cp65001异常 python安装后进入命令行交互模式,输入任何代码都报unknown encoding: cp65001异常 需要将编码(UTF-8)修改…

挖掘城市ip_德国卡尔斯草莓农庄:旅游IP打造要创意更要形象!

什么是IP?名人圈:杨超越游戏圈:王者荣耀影视界:延禧攻略出版界:Harry Potter相声界:郭德纲……别忙着争先恐后,知道你的IP数不胜数~~你知道的IP数不胜数,一个人、一部作品、一个品牌、一座城市…

rust种的南瓜为什么老是消失_冷天早餐别将就,用南瓜和萝卜这样做,鲜香松软,营养好吃又管饱...

导语:11月我家爱吃这菜,加根萝卜简单一卷,有颜有料,孩子经常点名吃。冷天早餐别将就,用南瓜和萝卜这样做,鲜香松软,营养好吃又管饱“南瓜再大本地卖,辣椒再小穿省过”记得悦悦小时候…

windows下搭建python运行环境

今天python的环境炸了,刚好也重新做一下,记录下折腾的过程。 文件下载 首先打开官网,找到对应的文件的下载索引。 https://www.python.org/downloads/windows/ 其中3.7.0是版本号,a是代表稳定版本,b代表的是测试版本&…

python云计算开发技术_云计算开发学习笔记:Python3 面向对象技术简介

来源:TechWeb.com.cn Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解…

ORDER BY NEWID()【原创】

关于ORDER BY NEWID(),我是这么理解的:NEWID()是一个产生随即uniqueidentifier的函数,对于ORDER BY子句来说,如果后面接的是一个常量字符串,那么每次排序的顺序都是一样的,如果后面接的是变量,那…

如何 更换vue的图标_vue如何实现图标点击选中后换一个图标(只单选)

优惠券{{coupon}}{{nocoupon}}{{coupon_left1}}{{num}}{{coupon_left2}}{{coupon_right1}}{{coupon.price}}{{unitPrice}}{{available}}{{universalCoupon}}{{date}}{{application}}这是vue.js代码var content new Vue({el: ".app-web",data: {coupon: 优惠券,nocou…

HK-2000 数采仪系统说明之 5.H2000SService程序调用说明

HK-2000数据采集仪必须启动H2000SService服务(V2版本才有这个程序),启动命令./H2000SService 7002 该命令也可以添加到bject目录下的StartUp.sh脚本里./H2000SService 7002 > /dev/null &这样启动时会自动运行该服务gbDscMonitorES程序运行的计算机必须与HK…

[Beego] 内置的模板函数(不同格式的字符串和html的互转)

在使用beego框架的时候,常常需要把不同形式的字符串转化为html,有时候为了安全考虑会将html转义,而有时候希望能显示html标签。在存储到db中后,再取出来的显示是原本的,即html标签不会生效,这就需要一些内置…

python中isalpha的用法_python函数--isalpha()方法

原博文 2019-09-26 10:59 − isalpha()方法 描述:Python isalpha() 方法检测字符串是否只由字母组成。isalpha()方法语法:str.isalpha()参数:无。返回值:如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False…

stm32驱动ssd1306配置_STM32 OLED 屏幕 驱动芯片SSD1306 IIC代码

#include "oled.h"#include "stdlib.h"#include "oledfont.h"#include "delay.h"#include "usart.h"//SSD1306 OLED 驱动IC驱动代码//驱动方式:IIC//OLED的显存//存放格式如下.//[0]0 1 2 3 ... 127//[1]0 1 2 3 ... 127//[…

C#数据结构-单链表

理论基础: 链表是用一组任意的存储单元来存储线性表中的数据元素。 如果结点的引用域只存储该结点直接后继结点的存储地址,则该链表叫单链表(Singly Linked List)。 单链表由头引用H唯一确定。头引用指向单链表的第一个结点,也就是把单链表第…

[Golang] string类型和其他类型的值的互转

问题 由于在开发过程中遇到类型转换问题,比如在web中某个参数是以string存在的,这个时候需要转换成其他类型,这里官方的strconv包里有这几种转换方法。 实现 有两个函数可以实现类型的互转(以int转string为例) 1. For…

pandas 根据单号分类_由 “猫捉老鼠”游戏联想的用户分类问题

一、说在最前 用户识别,用户分类,精准营销…这是咱们业务人员常常念叨的话。底层逻辑为无论任何营销目的,在营销手段上,越针对某一细化群体,达成目的的概率也就会越大。那今天就来和大家说道说道用户识别/分类的一种方…

python解释器环境中、用于表示上一次_文学人类学概说_尔雅文学人类学概说答案第四小节课后作业答案...

【判断题】对零星分数的统计资料,经过统计分组整理后,仍然不能发现其特点和规律。【单选题】小明一家三口在食用自制的臭豆腐后,相继出现全身乏力、头晕、头痛,继而出现视力模糊、眼睑下垂、复视、吞咽困难等症状,他们…

[Golang]slice的用法以及和数组的区别

说明 slice是go的一个语言特性,其实有点类似于cpp的vector,可变长度,可以扩展空间。今天详细看了下,做下总结。 slice本质上是一个区间,原型是[]T,大致的实现是这样的: type slice struct {first *Tlen i…

IE Firefox通用DOM

要写出在各大主流浏览器上都兼容的JS代码,就要关注他们的区别,下是IE和FF综合考虑的通用DOM! 1.document.formName.item("itemName") 问题说明:IE下,可以使用document.formName.item("itemName")或document.formName.ele…

arraylist从大到小排序_java基础算法之二叉树排序(递归)

一、二叉树介绍在计算机科学中,二叉树是每个结点最多有两个子树的树结构。二叉树由各种节点组成,如下图所示:每个节点都可以有左子节点,右子节点每一个节点都有一个值二叉树遍历:二叉树的遍历分左序,中序&a…

uvm 形式验证_IC设计职位详解之“数字验证工程师”就业必学课程

数字验证处于数字IC设计流程的前端,属于数字IC设计类岗位的一种。在IC设计中,数字验证所占的人数比重是非常多的,很多大公司,数字前端设计工程师与验证工程师的比例已经达到1:3。数字验证主要分成几种层次的验证&#…