某某音乐馆sign逆向------------小白讲解06

查看 83|回复 7
作者:Aircraftcomman5   
[color=]本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关.本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责
感谢大家的观看
   目标网址:
[color=]aHR0cHM6Ly95LnFxLmNvbS9uL3J5cXEvYWxidW0vMg==

步骤:
1. 找到位置
2. 熟悉跟栈
3. 找出所需加密模块
4. 对比结果  
[color=]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
目标位置
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[color=]注:加载器扣取与导出不在这里讲解
第一步
1.1 打开开发者工具进行发包
1.2 根据图片操作进行发包 找寻 目标数据包


图片 1.png (296.22 KB, 下载次数: 0)
下载附件
2025-1-26 12:52 上传

1.2 我们看到这个数据包内就有我们想要的
[color=]sign
同时显示的还有表单数据 另外还有时间戳1.4 那我们就老样子 直冲启动器来进行断点跟栈1.5 我们进入源代码后下断 在
[color=] l.send(t.data || null)  t
里面就有我们要的
[color=]sign
所以我们就明确了参生成位置


图片 2.png (33.73 KB, 下载次数: 0)
下载附件
2025-1-26 12:57 上传



图片 3.png (338.08 KB, 下载次数: 0)
下载附件
2025-1-26 12:58 上传

第二步:
2.1 转移阵地到 右边的调用堆栈处 根据
[color=]图片 1、2、3
进行跟栈下断点
2.2 根据
[color=]1.1
进行分页发包 让断点生效
[color=]2.3
接着在断点处向上找


图片 4.png (405.31 KB, 下载次数: 0)
下载附件
2025-1-26 13:00 上传



图片 5.png (61.39 KB, 下载次数: 0)
下载附件
2025-1-26 13:00 上传

第三步
3.1 我们找到了sign 加密处 但是不是呢,我们要做对比 防止是网站给我们的陷阱或虚假的参数
3.2 我们将找到sign 截屏 放掉断点 去对比数据包 是否一致
3.3 对比我们发现一致,那么我们就找到了他的加密位置
3.4 我们想要快速的找到他是如何加密的我们就需要找到他的定义处他在定义时肯定会给予我们更多的信息


图片 6.png (405.31 KB, 下载次数: 0)
下载附件
2025-1-26 13:02 上传



图片 7.png (475.6 KB, 下载次数: 0)
下载附件
2025-1-26 13:02 上传



图片 8.png (377.99 KB, 下载次数: 0)
下载附件
2025-1-26 13:02 上传

第四步
4.1 我们在
[color=]sign
处下断点 然后再附近找看有没有关于
[color=] i
的定义
4.2 在
[color=]sign:i
上面有一个三元表达式 我们对三元表达式 进行 分析


图片 9.png (22.08 KB, 下载次数: 0)
下载附件
2025-1-26 13:05 上传

4.3 对于这个三元表达式我们可以得到 他的条件为
[color=]false
所有走的第二个 ,那么我们可以知道的是我们只需要分析  
[color=]o(t.data)
就可以得到
[color=]i

    4.3.1 这个表达式的含义是 先判断
[color=]"GET" === t.type.toUpperCase()
在赋值给
[color=] i
    4.3.2 在这里
[color=]i

[color=]false
所以取值是第二个
[color=] o(t.data)
    4.3.3 接下来就是找
[color=] t.data
    4.3.4 还有
[color=]o()
方法定义处


图片 10.png (22.35 KB, 下载次数: 0)
下载附件
2025-1-26 13:08 上传

4.4 对于
[color=] t.data
我们 选中查看 数据是表单数据 所以对比大家可以自己去对比,这里就跳过


图片 11.png (25.69 KB, 下载次数: 0)
下载附件
2025-1-26 13:09 上传

4.5 对于
[color=]o()
我们就要看 他的整体向上看 我们可以知道他是在
[color=]L
方法内 作用域也在
[color=]L
方法里 那么出了
[color=]L
的范围那就失效了,
            也获取不到,所以,在第二步有一个
[color=]o
的定义,所以我们查看两者里面的内容是否一致


图片 12.png (33.91 KB, 下载次数: 0)
下载附件
2025-1-26 13:11 上传

4.6 两个
[color=]o
里面内容一致所以毋庸置疑,
[color=]4.5
里面
[color=]步骤2
就是
[color=]o
的定义处


图片 13.png (27.64 KB, 下载次数: 0)
下载附件
2025-1-26 13:14 上传



图片 14.png (48.87 KB, 下载次数: 0)
下载附件
2025-1-26 13:14 上传

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
代码扣取与调用
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第五步
5.1 首先我们找到了全部位置
[color=] 分析4.6
就可以知道 在这一步将
[color=]sign
拼接到
[color=]url
里面
5.2 所以我们要找到加载器,还有模块,参数已经给了就是载荷里面的表单数据
5.3 加载器提前已经扣取和导出,所以在这里就只讲解模块扣取
5.4 我们根据
[color=]步骤1、2
进行选中进入


图片 15.png (42.14 KB, 下载次数: 0)
下载附件
2025-1-26 13:17 上传

5.5 然后我们找到此方法的头部 进行单模快扣取


图片 16.png (27.48 KB, 下载次数: 0)
下载附件
2025-1-26 13:19 上传



图片 17.png (34.4 KB, 下载次数: 0)
下载附件
2025-1-26 13:19 上传

5.6 我们已经提前将加载器扣取出,所以就直接将模块放入加载器


图片 18.png (16.99 KB, 下载次数: 0)
下载附件
2025-1-26 13:20 上传

5.7 模块中还有一个小节,就是这个模块的尾部,我们返回浏览器,定位到此模块往下拉,就可以看到,
             我们选中查看这个加载的模块内容,
[color=]n(80)
,里面是
[color=]window
,那我们就可以仿照浏览器,将代码改写


图片 19.png (24.88 KB, 下载次数: 0)
下载附件
2025-1-26 13:21 上传



图片 20.png (39.43 KB, 下载次数: 0)
下载附件
2025-1-26 13:22 上传



图片 21.png (26.04 KB, 下载次数: 0)
下载附件
2025-1-26 13:22 上传

第六步
6.1 模块扣取放置改写完毕之后,就剩下调用,我们只需要仿照浏览器就行
6.2 我们返回浏览器查看他是如何调用的


图片 22.png (17.35 KB, 下载次数: 0)
下载附件
2025-1-26 13:36 上传

6.3 我们可以看到  
[color=]o = n(350).default;
是由,
[color=]n(350)
里面点出
[color=]default
然后再使用
[color=]o
加密,我们已经扣取出,
         从加载器我们可以看出他是一个数组,那么浏览器就是
[color=]第350个
,由于我们只扣取出了一个模块,
             那么相对应的位置也发生了改变,
[color=]下标在本地从350变为0 所以我们调用 就要是 o = 我们导出的加载器(350).default; 去在本地调用


图片 23.png (28.86 KB, 下载次数: 0)
下载附件
2025-1-26 13:37 上传

6.4 接着我们 按照浏览器的加密放置 我这里是
[color=] o(vv)
,在这之前我们已经分析过了,加密数据是从哪来的,
          所以这里我们也扣取出了,加密函数,接着就是组合,并打印内容


图片 24.png (52.72 KB, 下载次数: 0)
下载附件
2025-1-26 13:39 上传

[color=]-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[color=]总结
[color=]-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 数据的真实性是可靠的
2. 关键还有载荷里面的时间戳,那个也需要带上
3. 还有分页也在表单数据里  
感谢大家的观看,哪里讲的不好,请各位大佬给我这个小白,提提意见

下载次数, 下载附件

Arcticlyc   

图文并茂,排版也有很大改进
martindj   

我来学习学习
shuguang2121   

感谢分享
niani   

楼主,能讲一下加载器是什么吗?怎么获取,谢谢了
Klock0828   

厉害了我的哥,谢谢分享了。
cliffsu   

很实用,感谢分享
amwquhwqas128   

真厉害,非常实用的文章
您需要登录后才可以回帖 登录 | 立即注册

返回顶部