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
如果觉得教程不错,帮忙分享转发或者打赏鼓励,谢谢!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值