首页 > 社交 > 科普中国

反混淆刷题平台 Web 第二题:js 混淆,动态 cookie

常驻编辑 科普中国 2022-11-11 猿人   爬虫   控制台   函数   提示   位置   参数   代码   未定义   程序   动态   内容   详细
$dbsm_0x123c 未定义:IOU拜客生活常识网

IOU拜客生活常识网

其在第 22 行,是个大数组,补了之后运行程序后发现卡住了,一段时间后程度报错:IOU拜客生活常识网

IOU拜客生活常识网

这个报错可能是内存资源耗尽导致程序崩溃了,将这部分代码复制到浏览器中进行调试,开启一个新页面,打开开发者人员工具,在 Sources 中选择 Snippets,新建一个脚本,将已经扣下来的代码粘贴进去,在第一行写入 debugger;手动打断点调试,ctrl + s 保存文件后点击右下角按钮运行脚本即会在第一行断住:IOU拜客生活常识网

IOU拜客生活常识网

点击单步调试,一步步查看是哪里出了问题:IOU拜客生活常识网

IOU拜客生活常识网

点了几步后,卡了一下,跳到第 2711 行,是个 for 循环,右侧出现红框报错,意思是潜在的内存崩溃,即单步调试断到到此处时程序临近内存崩溃:IOU拜客生活常识网

IOU拜客生活常识网

接着往后单步调试,会发现一直在第 2712 行和第 2713 行间来回执行,到后来甚至浏览器崩溃了,所以问题出在 WxzuQr 对象中出现了无限循环,直至耗尽了内存资源:IOU拜客生活常识网

IOU拜客生活常识网

这部分内容在 $dbsm_0x42c3 函数中,接下来需要研究一下崩溃原因,右侧堆栈中向上跟栈,上两步分别通过构造函数创建了两个实例对象 WjJIeN 和 vnuqco,WjJIeN 部分如下:IOU拜客生活常识网

_0x11a714['prototype']['WjJIeN'] = function(_0x4859ef) {
                if (!Boolean(~_0x4859ef)) {
                    return _0x4859ef;
                }
                return this['WxzuQr'](this['yewpLt']);
            }

这里进行了一个 if 判断,~ 为按位取反,意思是如果 !Boolean(~_0x4859ef) 的值为 false,则执行 WxzuQr 的无限循环行为,直至程序崩溃,接着跟进到 vnuqco 部分,查看 _0x4859ef 是啥,对什么进行了判断:IOU拜客生活常识网

_0x11a714['prototype']['vnuqco'] = function() {
                _0x2940ac = new RegExp(this['PuKGlh'] + this['CTXIfT']),
                _0x3fba94 = _0x2940ac['test'](this['XxpyjG']['toString']()) ? --this['yHmSUE'][0x1] : --this['yHmSUE'][0x0];
                return this['WjJIeN'](_0x3fba94);
            }

返回值中给 WjJIeN 传入的参数为 _0x3fba94,其定义在第 2699 行,是个三目表达式:IOU拜客生活常识网

_0x2940ac['test'](this['XxpyjG']['toString']()) ? --this['yHmSUE'][0x1] : --this['yHmSUE'][0x0];

到控制台打印输出一下,看看该行各部分什么含义:IOU拜客生活常识网

IOU拜客生活常识网

--this['yHmSUE'][0x1] 的值固定为 -1,而每运行一次 this['yHmSUE'][0x0] 的值即减一:IOU拜客生活常识网

console.log(!Boolean(~-1)) // true
console.log(!Boolean(~-2)) // false

所以只有当 _0x2940ac['test'](this['XxpyjG']['toString']()) 的值为 true 时才不会进入无限循环,在控制台打印下 this['XxpyjG']['toString']() 部分内容:

相关阅读:

  • 华夏人类源头,是如何从“古猿”演变成原始文明的
  • 立秋,浅品秋语诗词
  • 浅浅地大胆地聊聊进化论
  • 潮牌速生速死,已收割不动“年轻韭菜”
  • 世界上第一个死亡的人,猿人(宗教说法中是亚当和夏娃)
  • 《铁血战士2》中的头骨是什么?他们还猎杀过什么?
  • 江苏南京江宁区九大旅游景点
  • 史前文明的遗迹?专家发现50万年前刻字的贝壳,至今还不清
  • 嘴巴突出像猿人?医生说:两种“突嘴”形成主要都与这块骨
  • 著名雕塑家刘若望:用热血唤醒消逝的生命
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。