网站 备案 多久,许昌企业网站建设,wordpress视频防盗链,企业网站需求方案声明#xff1a;本篇文章内容是整理并分享在学习网上各位大佬的优秀知识后的实战与踩坑记录
前言
这篇文章主要是研究如何动态生成后缀参数MmEwMD的#xff0c;它是在文章爬虫逆向学习(六)#xff1a;补环境过某数四代的基础上进行研究的#xff0c;代码也是在它基础上增…声明本篇文章内容是整理并分享在学习网上各位大佬的优秀知识后的实战与踩坑记录
前言
这篇文章主要是研究如何动态生成后缀参数MmEwMD的它是在文章爬虫逆向学习(六)补环境过某数四代的基础上进行研究的代码也是在它基础上增加补点的且下文破解的接口所需的cookie也可以直接用它的代码得到。
MmEwMD
某数针对xhr请求会在其后缀增加MmEwMD参数它魔改了xhr的open方法而MmEwMD就是在open方法执行时生成的某数并没有强制请求一定要携带MmEwMD参数但是如果携带了它就一定会校验校验失败则返回400。
实战
生成位置定位
站点aHR0cDovL3d3dy5mYW5nZGkuY29tLmNuL25ld19ob3VzZS9uZXdfaG91c2UuaHRtbA 目标接口aHR0cDovL3d3dy5mYW5nZGkuY29tLmNuL3NlcnZpY2UvZnJlc2hIb3VzZS9nZXRTZXZlbkRheXNSYW5raW5nLmFjdGlvbg 其实就是这个排行版不过所有接口都是一套逻辑都可以用来实验。
查看包的调用栈点击下图红框的堆栈进入执行代码
前面我们知道了某数魔改了xhr的open方法并在此实现MmEwMD生成的这时就直接锁定s.open在这里打断点重新刷新页面将断点在这里断住后跟进去
可以看到这里就是生成位置了至于更深入的生成位置这里不研究因为我在深入研究后发现这个位置比较适合补环境当然大家学习时可以深入研究MmEwMD的生成逻辑并不难算法实现也未尝不可。
补环境思考
这里是选择补环境的方式进行破解的如果想算法破解可以参考瑞数4——MmEwMD逆向分析这篇文章很详细得分析了MmEwMD参数的生成逻辑。
在实现参数的补环境时其实有过思考
既然某数是魔改了xhr那能不能在nodejs模拟xhr发包直接拿到魔改后的url呢 如果这种方式可以实现那不需要深入研究代码就能快速拿到加密结果了但是很遗憾我使用nodejs包xmlhttprequest进行hook发包但是没法hook到浏览器端使用的window.XMLHttpRequest没法复现。
生成代码中哪个位置是比较容易执行的 这个位置其实就是前面生成位置定位中指明的我是这么思考的 这里选择的是通过_$O3得到加密结果如果直接调用_$xI那得创建xhr对象执行会报错。大家可以去看_$O3的代码它只需要一个参数也就是url且它的代码本身就是在处理url如果使用比它更细的维度方法可能会执行异常。
MmEwMD是在VM层生成的且每次代码都会变化怎么实现动态生成的 只要我们能动态拿到_$O3方法然后将其导出那无论VM怎么变都不影响了。 这里说一下VM这一层是调用.call执行得到的它的代码会根据content和外链js变换而变化我们在调试时可以直接拿到call后的代码写死能方便我们调试。在补成功拿到加密结果后就可以使用正则匹配在执行call前匹配替换加入自己的导出代码。
破解
这里我们还是在原来的代码上处理我们直接把call后的代码复制给ret它本身是自执行函数然后我们创建全局变量params_enc导出关键代码函数_$d0 注意我调试的代码方法名变了大家根据自己实际的代码情况处理
这时我们就拿到了目标函数直接执行它
看执行结果发现并没有加密这时我们就知道是document.createElement(a)出的问题了
这里使用debugger将它断住看看是哪里调用的它
看代码知道它对取值结果做了很多判断
做以下处理将a加入hook环境中看看它都做了啥
缺啥补啥值去浏览器拿
最终需要补全都是必须要的补好就能拿到结果了
动态获取
上面我们在代码写死条件下实现了参数加密不过在调用时总归是要实现动态的毕竟我们每次获取的content和自执行函数是不同的上面我们说要用正则匹配来拿到目标函数其实就是两个地方
找到ret _$b6.call(_$Yq, _$cZ)并将_$cZ拿出来将params_enc _$d0;放进_$cZ
思路就是这个思路给大家看看我实现的正则匹配后结果 匹配前 匹配后 我实在python层实现的正则匹配
破解结果