当前位置:网站首页>JS逆向100题——第1题
JS逆向100题——第1题
2022-07-28 05:27:00 【意识存在感】
天翼云登录
目标与目的
目标网站:天翼云登录
目的:通过构建登录参数,完成天翼云的登录操作。
相关技术
本题涉及两个方面的参数构造:
- 密码构造:登录时将密码通过加密,生成密文传递给服务器
- 几个相关参数构造:未涉及加密算法,为时间戳与随机数通过一定的计算后生成的几个可变化的值。
本题涉及的js知识点:
(个人理解,或有误,后续认识加深再来调整)
- webpack打包:js代码通过wwebpack打包后会生成固定模式,该模式有标准的三段式,1. 自执行的函数;2. 加载器;3. 具体的模块代码。
- 代码在被调用时会将模块对应的id传给加载器,通过加载器去运行指定代码。
解题步骤
1. 登录
登录时用错误的密码:作用是查看本次请求的相关参数。通过参数名去控制台搜索,锁定参数生成位置。
参数如下:
参数说明
- userName:用户名
- password:密码
- referrer:wep (固定,wep端)
- mainVersion: 300021100 (固定)
- comParam_curTime:时间戳
- comParam_seqCode:计算所得
- comParam_signature:计算所得
- isCheck:true(固定值)
- locale:zh-cn(固定值)
2. 查找密码生成逻辑
- 在控制台搜索关键词"password",这里有一个小技巧:搜索时加上"=" 或者 ":"等赋值符号,可能更快的找到相应位置。(如果搜不到,或者因为粗心没找到,那就可以先搜别的参数,比如 username。或者通过xhr断点向上找堆栈)。可以找到密码的生成位置如下:
- 此时打断点,重新登陆,可以看到a.value就是原始密码
- 现在可以将生成密码的这段代码复制到控制台运行,确定该行代码即是密码生成逻辑
- 把Object(l[“c”])、Object(l[“f”])、Object(l[“g”])拿到控制台运行,他们对应的是三个函数。
- js构造如下,将Object(l[“c”])、Object(l[“f”])、Object(l[“g”])替换
- 可以看出H函数中涉及到TripleDES加密。关键点就在p对象。
3. 简单还原密码加密
这里使用第一种方法简单还原密码加密,生成密文。
- 通过使用crypto-js模块,构造p对象,具体代码如下:
- 通过构造p对象,运行代码后,即可完成密码的加密。
- 至此密码已经还原,但是出于学习的目的,应该尽量不用第三方插件来完成。而且若开发者将加密算法进行魔改,那这种引第三方包的方式肯定是不OK的。故继续向下。
4. 通过扣代码完成密文生成
上面已经找到关键点,对象p。此时若能够找到p对象的生成逻辑,将代码拿过来那就可以大功告成了。
- 断点调试查找p的生成过程,可以看出刚进入H函数,p对象就已经生成了。
- 向上找p的生成逻辑,4407行,p = t.n(s),s = t(“3452”)
打断点重新运行,发现并不会断在p生成这里,往上看代码可以发现这代码被webpack打包后的样子。
var func; // 自执行函数 !function (a) { // 加载器,运行模块 function ccc(b) { a[b].call(xxx,xxx,xxx); } func = ccc; } ( { // 需要被运行的模块 1: function(x1,x2,x3){}, 2: function(x1,x2,x3){}, 3: function(x1,x2,x3){}, } ) func(1) // 调用函数1 func(2) // 调用函数2 func(3) // 调用函数3接下来我们就要去找到对应的加载器和模块,然后构造一个自执行函数,最后通过调用对应的方法达到目的。可以直接往上找,加载器一般在代码的头部。
- 在398行找到u方法,紧接着还有一些u的属性的赋值
- 这是可以构造一个简易的webpack的代码逻辑。如下:
- 然后去找对应的模块,上文中,对象p = t.n(s),而s=t(“3452”),所以需要去找3452模块,通过H函数的断点调试,可以知道,这些加载的模块并不在当前的js文件中,而在另一个js文件——chunk-vendors.f910be7c.js中
- 模块添加完成之后如下:
- 此时运行测试
输出结果如下:
- 至此密码加密逻辑已经解决
5. 其他参数构造
其他几个参数不涉及加密算法,还原也较为简单,基本步骤也是先找构造位置,然后把代码提取出来,运行,缺什么补什么。
- 关键词搜索
- 提取代码为:
6. 登录测试(使用正确的密码)
js逆向100题——第1题完成
边栏推荐
- Treasure plan TPC system development DAPP construction
- OJ 1020 最小的回文数
- Leetcode 刷题日记 剑指 Offer II 053. 二叉搜索树中的中序后继
- Development of Quantitative Trading Robot System
- 代码整洁之道(二)
- 水渲染示例
- Leetcode brush question diary sword finger offer II 048. serialization and deserialization binary tree
- AQS之CyclicBarrier源码解析
- 【动态规划--买卖股票的最佳时期系列】
- [pta ---- traversal of tree]
猜你喜欢

Leetcode brush question diary sword finger offer II 053. Medium order successor in binary search tree

图形管线基础(一)

STM32的IAP跳转相关bug经历

Development of clip arbitrage / brick carrying arbitrage system

mysql-8.0.17-winx64(附加navicat)手动配置版安装

做气传导耳机最好的是哪家、最好的气传导耳机盘点

Mongodb quick start

Rain Scene Effect (I)

C语言memcpy库函数与memmove的作用

NiO example
随机推荐
【动态规划--买卖股票的最佳时期系列3】
[queue, simple application of stack ---- packaging machine]
Leetcode brush question diary sword finger offer II 055. binary search tree iterator
feignclient @RequestMapping参数设置及请求头简易方式设置
Bug experience related to IAP jump of stm32
New Selenium
[dynamic planning -- the best period for buying and selling stocks series 3]
图形管线基础(番外篇)
InitializingBean接口及示例
动态规划--简单题型之爬楼梯
SSAO By Computer Shader(二)
SSAO by computer shader (II)
[pta ---- traversal of tree]
@Postconstruct annotations and useful examples
Fermat's theorem
[c语言]--一步一步实现扫雷小游戏
OJ 1020 最小的回文数
关于时间复杂度,你不知道的都在这里
关于Shader KeyWord的整理
Problem solving for ACM freshmen in Jiangzhong on October 26
![![[Pasted image 20220614145418.png]]](/img/d3/47ec0f323ff72c0013b7a9de66cb98.png)
![![[Pasted image 20220615105518.png]]](/img/6a/fa1e78e86397d5e516b89db6a81da6.png)
![![[Pasted image 20220615105804.png]]](/img/d4/09a11cc6d416a0c65973348c0a2e19.png)
![![[Pasted image 20220615105935.png]]](/img/d1/2f47e51f680dc529d05b26a8e3b762.png)
![![[Pasted image 20220615110154.png]]](/img/3b/40d6dd11e90762da8835f51f8af9cb.png)

![![[Pasted image 20220615111005.png]]](/img/da/c0ff0fd2c5e2ccbece2eacbc2c062e.png)
![![[Pasted image 20220615111704.png]]](/img/28/7de54edcac6f0575d3bd315efa597a.png)
![![[Pasted image 20220615111920.png]]](/img/a4/003be2cea2325634f2d8b87f0d029a.png)
![![[Pasted image 20220615112820.png]]](/img/4c/1e4fa9d1e6a581c4860692a8e50383.png)
![![[Pasted image 20220615112954.png]]](/img/02/24de704a54326baf676c852d90c4f0.png)
![![[Pasted image 20220615121930.png]]](/img/44/4ac54ddad5379ead70b5858b9075ec.png)
![![[Pasted image 20220615122033.png]]](/img/7f/b840aa454bc7aee9c2e5a6b52e1092.png)
![![[Pasted image 20220615122253.png]]](/img/3a/a3f22d4ec3138c8f9e56e7f2152d46.png)
![![[Pasted image 20220615122531.png]]](/img/d6/2bd599ef7e8df8978b795f21b1d85d.png)
![![[Pasted image 20220615122659.png]]](/img/ad/8155c51ed8388018e7333000026a4d.png)




![![[Pasted image 20220615124129.png]]](/img/42/cc0123f56e77c3a6fe35aace4b33a7.png)

