js逆向-猿人学比赛14题-扣代码破解

查看 144|回复 10
作者:fourteen7x   
https://match.yuanrenxue.com/match/14


snipaste20220821_111233.jpg (63.07 KB, 下载次数: 0)
下载附件
14题
2022-8-25 16:05 上传

fiddler分析接口


14-1.jpg (508.05 KB, 下载次数: 0)
下载附件
解析-1
2022-8-25 16:06 上传

每次请求数据,都会先请求
https://match.yuanrenxue.com/api/match/14/m,会带上可疑参数mz,每次请求此参数不变化


14-2.jpg (251.4 KB, 下载次数: 0)
下载附件
解析-2
2022-8-25 16:06 上传

请求数据接口,都会带上可疑参数m,每次请求m都会变


14-3.jpg (268.95 KB, 下载次数: 0)
下载附件
解析-3
2022-8-25 16:07 上传

重放攻击,请求数据出错。确定接口被加密。
直接hook cookie  确定加密位置


hook-1.jpg (130.8 KB, 下载次数: 0)
下载附件
h-1
2022-8-25 16:08 上传




扣代码-8.png (300.24 KB, 下载次数: 0)
下载附件
h-2
2022-8-25 16:09 上传

尝试hook cookie失败,Object.defineProperty方法被重写


hook-2.jpg (178.96 KB, 下载次数: 0)
下载附件
h-3
2022-8-25 16:10 上传

  


hook-3.jpg (187.87 KB, 下载次数: 0)
下载附件
h-4
2022-8-25 16:11 上传

在Object.defineProperty方法被重写赋给新的变量,使用新的变量重新hook 成功


hook-4.jpg (175.28 KB, 下载次数: 0)
下载附件
h-5
2022-8-25 16:12 上传




hook-5.jpg (171.92 KB, 下载次数: 0)
下载附件
h-6
2022-8-25 16:13 上传

找到可疑参数mz 生成位置,由浏览器环境组成的z数组,然后在base64加密生成。浏览器环境不变这个mz参数就不变,这道题可以直接拿结果用
  


hook-6.jpg (65.76 KB, 下载次数: 0)
下载附件
h-7
2022-8-25 16:13 上传




hook-7.jpg (190.55 KB, 下载次数: 0)
下载附件
h-8
2022-8-25 16:14 上传

继续找m参数位置,遇到debugger.直接右键never pause here,跳过debugger后找到加密参数m的生成位置
接下来就是扣代码生成m参数拉


抠代码-1.jpg (48.18 KB, 下载次数: 0)
下载附件
k-1
2022-8-25 16:15 上传

  


抠代码-2.jpg (142.13 KB, 下载次数: 0)
下载附件
k-2
2022-8-25 16:15 上传

把生成参数m的代码复制到编辑器,然后缺啥补啥的扣
     


抠代码-3.jpg (178.85 KB, 下载次数: 0)
下载附件
k-3
2022-8-25 16:16 上传

  


抠代码-4.jpg (207.66 KB, 下载次数: 0)
下载附件
k-4
2022-8-25 16:17 上传

扣代码过程遇到的问题1,神秘参数被混淆,在页面不能直接找到。先把结果拿来用,继续扣。后面在hook参数的位置。猜测是返回js生成的加密参数


扣代码-z.png (428.75 KB, 下载次数: 0)
下载附件
k-5
2022-8-25 16:17 上传

扣代码过程遇到的问题2,d变量的生成是上面提到过的由浏览器环境生成的z数组,可以直接拿结果用。继续扣
  


扣代码-asn1.png (365.15 KB, 下载次数: 0)
下载附件
k-6
2022-8-25 16:18 上传




扣代码-asn1-2.png (422.46 KB, 下载次数: 0)
下载附件
k-7
2022-8-25 16:19 上传

     


扣代码-6.png (206.6 KB, 下载次数: 0)
下载附件
k-8
2022-8-25 16:20 上传




扣代码-7.png (203.29 KB, 下载次数: 0)
下载附件
k-9
2022-8-25 16:23 上传




扣代码-8.png (300.24 KB, 下载次数: 0)
下载附件
k-10
2022-8-25 16:23 上传


扣代码过程遇到的问题3:发现ASN1未定义,但是在浏览器中window['ASN1] = qM,ASN1是属于window的参数,在全局中是可以找到的。说明利用浏览器环境和node环境的差异弄了window.导致在node环境中找不到ASN1
   
                                      



扣代码-9.png (359.32 KB, 下载次数: 0)
下载附件
k-11
2022-8-25 16:26 上传




扣代码-10.png (200.97 KB, 下载次数: 0)
下载附件
k-12
2022-8-25 16:27 上传

直接用window使用ASN1,运行代码出现死循环,把代码复制到浏览器中运行也是进入死循环,说明不是浏览器指纹问题


扣代码-11.png (350.92 KB, 下载次数: 0)
下载附件
k-13
2022-8-25 16:28 上传




扣代码-12.png (208.69 KB, 下载次数: 0)
下载附件
k-14
2022-8-25 16:29 上传

这个判断是判断m5函数是是否有换行,有换行就true,所以m5函数不格式化就可以解决,或者直接把判断结果替换为false. 继续往下扣


扣代码-13.png (253.85 KB, 下载次数: 0)
下载附件
k-15
2022-8-25 16:29 上传

扣代码过程遇到的问题4:遇到window未定义,说明window被删了


扣代码-15.png (994.95 KB, 下载次数: 0)
下载附件
k-17
2022-8-25 16:32 上传




扣代码-16.png (367.91 KB, 下载次数: 0)
下载附件
k-18
2022-8-25 16:33 上传




扣代码-17.png (374.14 KB, 下载次数: 0)
下载附件
k-19
2022-8-25 16:33 上传

  


扣代码-18.png (559.06 KB, 下载次数: 0)
下载附件
k-20
2022-8-25 16:34 上传

  


扣代码-19.png (203.64 KB, 下载次数: 0)
下载附件
k-21
2022-8-25 16:35 上传

通过重写eval 进行debugger发现很多对浏览器没用的操作而对node环境有用的操作,把对window,navigator,document 的操作注释了。补全一下相关的navigator环境,然后运行代码m参数出来,接下来我们要去看看之前两个神秘参数window['v14']和window['v142']是怎么生成的


扣代码-20.png (416.79 KB, 下载次数: 0)
下载附件
k-22
2022-8-25 16:35 上传




扣代码-21.png (486.92 KB, 下载次数: 0)
下载附件
k-23
2022-8-25 16:36 上传




扣代码-22.png (455.87 KB, 下载次数: 0)
下载附件
k-24
2022-8-25 16:37 上传

确认v14,v142是返回的js生成,直接把返回的js拿过来测试,程序结束不了,检测有定时器。直接把定时器置空,然后程序正常运行。接下来实际测试加密函数看能不能用。


扣代码-23.png (394.92 KB, 下载次数: 0)
下载附件
k-25
2022-8-25 16:38 上传




扣代码-24.png (284.49 KB, 下载次数: 0)
下载附件
k-26
2022-8-25 16:41 上传




扣代码-25.png (324.19 KB, 下载次数: 0)
下载附件
k-27
2022-8-25 16:41 上传

测试报错m参数生成有误,利用捕获代码错误语句和浏览器与node的差异,识别否是正常浏览。把上面两个地方修改后。再试试能不能获取数据


扣代码-26.png (478.54 KB, 下载次数: 0)
下载附件
k-28
2022-8-25 16:42 上传




扣代码-27.png (451.94 KB, 下载次数: 0)
下载附件
k-29
2022-8-25 16:48 上传

第一页获取到数据,说明js是没有错误的。应该是翻页过程中产生了新的数据变量导致后面参数计算有误。经过一番调试发现this['\x69']、this['\x6a']、this['\x53']每请求一页数据都会有变化,请求下一页数据是会保持上一页的值,所以这三个参数要返回


扣代码-28.png (527.24 KB, 下载次数: 0)
下载附件
k-30
2022-8-25 16:49 上传

把变量参数加上就可以获取到数据了

下载次数, 下载附件

wangguang   


fourteen7x 发表于 2022-8-23 17:51
是多传了一次,后面两个图片是重复的可以不用看。发布的贴子好像改不了

可以改的,在帖子里面有个编辑进去就可以改


image.png (32.82 KB, 下载次数: 0)
下载附件
2022-8-23 20:32 上传

我猜是不是附件里面有那个图片,您把附件的没使用的删了试试。我之前上传附件就是我没使用他也会出现在文章里面
fourteen7x
OP
  

不知道怎么回事,提交之后,顺序有点乱了。
chaojiak47   


fourteen7x 发表于 2022-8-23 15:03
不知道怎么回事,提交之后,顺序有点乱了。

哪里顺序乱了?好像最后有2个图没插入。
kds0221   

是乱了,,我眼都花了
feiyu361   

感谢楼主分享。学习下
fourteen7x
OP
  

确实乱了,不过可以在点击 编译一下
无言Y   


Hmily 发表于 2022-8-23 15:38
哪里顺序乱了?好像最后有2个图没插入。

最后两张图不知道怎么跑最后面去了,它两不应该在最后
lsptz   

感谢分享
wangguang   


fourteen7x 发表于 2022-8-23 16:15
最后两张图不知道怎么跑最后面去了,它两不应该在最后

说明没插入,你找到图片所在正文位置,再插入一下?或者是不是图片传多了一次?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部