尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

猿人学 第二题 js 混淆-动态cookie1

猿人学 第二题 js 混淆-动态cookie1 题目地址https://match.yuanrenxue.cn/match/2(function(){use strict;var_constructorwindow.Function.prototype.constructor;window.Function.prototype.constructorfunction(){if(argumentstypeofarguments[0]string){if(arguments[0].indexOf(debugger)!-1){returnfunction(){};}}return_constructor.apply(this,arguments);};})();上来就是个难点不能右键Never pause here需要hook constructor推荐用窜改猴来hook这个题每次翻页会发两次请求第一次返回js代码第二次返回数据需要破解的是cookie里的m用上述同样的方法再hook cookie(function(){use strict;constrawObject.getOwnPropertyDescriptor(Document.prototype,cookie);Object.defineProperty(document,cookie,{configurable:false,get:function(){//debugger;constresraw.get.call(document);//console.log([cookie get], res);returnres;},set:function(val){debugger;//console.log([cookie set], val);returnraw.set.call(document,val);}});})();断下来之后查看堆栈找到cookie设置的位置发现m是由_0x2df3b8[$dbsm_0x1923(‘\x30\x78\x33\x62\x66’, ‘\x75\x41\x47\x47’) ‘\x4e\x4d’]函数生成的如下图进入函数发现依旧混淆看不懂就全撸下来执行代码发现卡死不动了还报了错如下图如上图发现对_0x209e4d[removeCookie]函数检查了toString导致_0x29e737的值为假removeCookie:function(){returndev;},如上代码改为如下代码把空格去掉即可注意改完这个代码就不能格式化了removeCookie:function(){returndev;},额还是卡住了还没完还有检测我在代码里加了console.log(11111111)但是没有输出说明上面有检测在(function $dbsm_0x5eea6b(_0x156f17)())函数里如上图再用console.log(11111111)去检查发现在第二行出的问题第二行唯一就执行了$dbsm_0xe9cd函数说明检测在$dbsm_0xe9cd函数里如上图同样的方法找到这一行new _0x523b70($dbsm_0xe9cd)[CDYvCJ]();感觉没啥用直接注释掉如上图继续发现有个setInterval直接注释掉如上图如上图ok整到这里就差不多了这个document补不补看情况因为我们只要m先看一下如何调用我们刚撸下来的整篇代码我们是在这里决定的全撸下来这就是入口这个函数出去之后就是m的值所以上面哪个document没用直接注释掉还有最下面的setInterval也注释掉现在就跑通了然后发现这个函数的两个参数一个是函数一个是时间戳本质是向第一个参数传入第二个参数我们就找到了设置document.cookie的函数上面那个函数发现这个函数大量的检测关键代码在return里我们决定在找一层经过在下断点发现return最后执行的是他上面的函数所以直接执行发现缺qz直接去全局搜索qz的值添加到判断之前终于跑出结果了整体代码如下https://github.com/A-pipi/yrx_spider
返回列表