本帖最后由 Aircraftcomman5 于 2025-1-26 13:47 编辑
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关.本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责
感谢大家的观看  
目标网址:aHR0cHM6Ly95LnFxLmNvbS9uL3J5cXEvYWxidW0vMg==
步骤:
1. 找到位置
2. 熟悉跟栈
3. 找出所需加密模块
4. 对比结果
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
目标位置
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
注:加载器扣取与导出不在这里讲解
第一步
1.1 打开开发者工具进行发包
1.2 根据图片操作进行发包 找寻 目标数据包
1.2 我们看到这个数据包内就有我们想要的sign 同时显示的还有表单数据 另外还有时间戳 1.4 那我们就老样子 直冲启动器来进行断点跟栈 1.5 我们进入源代码后下断 在 l.send(t.data || null) t 里面就有我们要的sign 所以我们就明确了参生成位置
第二步:
2.1 转移阵地到 右边的调用堆栈处 根据图片 1、2、3 进行跟栈下断点
2.2 根据1.1 进行分页发包 让断点生效2.3 接着在断点处向上找
第三步
3.1 我们找到了sign 加密处 但是不是呢,我们要做对比 防止是网站给我们的陷阱或虚假的参数
3.2 我们将找到sign 截屏 放掉断点 去对比数据包 是否一致
3.3 对比我们发现一致,那么我们就找到了他的加密位置
3.4 我们想要快速的找到他是如何加密的我们就需要找到他的定义处他在定义时肯定会给予我们更多的信息
第四步
4.1 我们在 sign 处下断点 然后再附近找看有没有关于 i 的定义
4.2 在sign:i 上面有一个三元表达式 我们对三元表达式 进行 分析
4.3 对于这个三元表达式我们可以得到 他的条件为false 所有走的第二个 ,那么我们可以知道的是我们只需要分析 o(t.data) 就可以得到 i 值
4.3.1 这个表达式的含义是 先判断"GET" === t.type.toUpperCase() 在赋值给 i
4.3.2 在这里 i 是false 所以取值是第二个 o(t.data)
4.3.3 接下来就是找 t.data
4.3.4 还有 o()方法定义处
4.4 对于 t.data 我们 选中查看 数据是表单数据 所以对比大家可以自己去对比,这里就跳过
4.5 对于o()我们就要看 他的整体向上看 我们可以知道他是在L方法内 作用域也在L方法里 那么出了L的范围那就失效了,
也获取不到,所以,在第二步有一个o的定义,所以我们查看两者里面的内容是否一致
4.6 两个o里面内容一致所以毋庸置疑,4.5里面步骤2就是o的定义处
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
代码扣取与调用
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第五步
5.1 首先我们找到了全部位置 分析4.6 就可以知道 在这一步将sign拼接到url里面
5.2 所以我们要找到加载器,还有模块,参数已经给了就是载荷里面的表单数据
5.3 加载器提前已经扣取和导出,所以在这里就只讲解模块扣取
5.4 我们根据步骤1、2进行选中进入
5.5 然后我们找到此方法的头部 进行单模快扣取
5.6 我们已经提前将加载器扣取出,所以就直接将模块放入加载器
5.7 模块中还有一个小节,就是这个模块的尾部,我们返回浏览器,定位到此模块往下拉,就可以看到,
我们选中查看这个加载的模块内容,n(80),里面是window,那我们就可以仿照浏览器,将代码改写
第六步
6.1 模块扣取放置改写完毕之后,就剩下调用,我们只需要仿照浏览器就行
6.2 我们返回浏览器查看他是如何调用的
6.3 我们可以看到 o = n(350).default; 是由,n(350)里面点出default 然后再使用o加密,我们已经扣取出,
从加载器我们可以看出他是一个数组,那么浏览器就是第350个,由于我们只扣取出了一个模块,
那么相对应的位置也发生了改变,下标在本地从350变为0 所以我们调用 就要是 o = 我们导出的加载器(350).default; 去在本地调用
6.4 接着我们 按照浏览器的加密放置 我这里是 o(vv),在这之前我们已经分析过了,加密数据是从哪来的,
所以这里我们也扣取出了,加密函数,接着就是组合,并打印内容
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总结
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 数据的真实性是可靠的
2. 关键还有载荷里面的时间戳,那个也需要带上
3. 还有分页也在表单数据里
感谢大家的观看,哪里讲的不好,请各位大佬给我这个小白,提提意见  
|