JS逆向 | 练手吗?头秃的那种。
时间:2022-06-26
本文章向大家介绍JS逆向 | 练手吗?头秃的那种。,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
咸鱼又来练手了,需求在这:
想想有点激动:
分析请求
用浏览器抓一波登陆包:
可以看到有 _abr_
和 beibeitoken
两个加密参数。
我们再找找发现beibeitoken
是上一个请求返回的:
好像难度一下减少了一半。
定位加密位置
还是老套路,搜就完事了:
通过关键字就找到一个相关文件,先进去看看。
先打上断点,重新登录一下,成功进入断点说明位置十有八九是找到了,F11进去看看里面的加密逻辑是什么样的。
看上去逻辑还蛮简单的,就是先这样再那样然后拼接在一起返回回来,完事儿~
分析加密
我们一个个跟进去研究下:
u,d,a,e,s
这几个加密都可以通过上图的方法追踪到对应的加密。
这里我们主要研究f
与m
的加密逻辑。
先看看f
的加密逻辑:
1var f = d.length ? (0,l["default"])(d.join("&")) : ""
这里跟进去看看l["default"]
是什么:
这里的e
是初始化加密算法,我们再跟进去看看:
看到这里我已经不怎么想扣代码了,这么多乱七八糟的什么东西,要是真抠出来估计头发要掉一半。
而且这个代码看着也不像自写的算法,估计也是套的通用的那几种算法,所以我开始翻之前扣过的代码,果然让我找到了:
上面的代码是不是长得有点像,为了验证这个想法我把js里关于加密的代码扣下来look look
不得不说好的编辑器可以让你事半功倍,看到图中划线的地方这个参数的加密方法就一目了然了。
我们可以直接把它改成Python实现:
from hashlib import md5
def md5value(s):
a = md5(s.encode()).hexdigest()
return a
接下来继续分析m
的加密方法:
1m = (0,c["default"])(g, "ytU7vwqIx2UXQNsi");
有了上面的铺垫,我们继续追进去分析一波:
接下里就是编辑器表演的时候了
好了,到这里就破案了,接下来你可以用Python实现也可以直接使用Node的CryptoJS加密实现。
下次练(tou)手(tu)再见~
- 如何使用Hue创建Spark2的Oozie工作流(补充)
- 如何基于CDSW基础镜像定制Docker
- OVSDB介绍及在OpenDaylight中的调用
- 如何在CDH集群的非元数据库节点安装MySQL5.7.12
- PySpark数据类型转换异常分析
- SQLI-LABS 更新帖(二)
- 如何重置Hue用户密码
- 如何使用R连接Hive与Impala
- Equation Group泄露工具之vBulletin无文件后门分析
- 如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业
- 如何使用Beeline连接Impala
- 微软公式编辑器系列漏洞分析(一):CVE-2017-11882
- 预警揭秘:倒计时炸弹11.2.0.4前版本DB Link必须在2019年4月升级真相
- RPO攻击技术浅析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android实现IP地址输入框的方法示例代码
- Node.js 搭建 HTTPS 服务器
- Android布局之表格布局TableLayout详解
- 简单实现Android倒计时效果
- Android实现单页面浮层可拖动view的一种方法
- 排查 Node.js 服务内存泄漏,没想到竟是它?
- Android判断网络状态的代码
- Android开发实现布局中为控件添加选择器的方法
- Android控制文本输入框最多输入10个字符长度
- Elasticsearch 内部数据结构深度解读
- 关于 Elasticsearch 段合并,这一篇说透了!
- 解了这十道C语言题,你敢说你精通C语言?
- 微服务中使用Maven BOM来管理你的服务版本
- 设计模式之代理模式(文末赠书)
- 使用Spring IoC容器:选BeanFactory还是ApplicationContext?