【JS逆向】记录一次无限debbuger解决——阿里系cookie

【作者声明】文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

一、问题描述

        最近在逆向雪球网cookie,碰到阿里云WAF墙的时候,遇到了一个棘手的无限debbuger问题。

        网址:aHR0cHM6Ly94dWVxaXUuY29tLw==

        不过注意请求的时候,要删掉cookie和网址请求时自动生成的md5__1038的值。才会弹出无限debbuger。记得提前打上全局脚本断点,观察响应链。

        该网站的请求思路是,第一次请求时,会返回一段HTML代码,代码包含一个textarea标签,两个script标签。大概就长这样。

        观察这段代码,可以发现第一个script标签的js代码。主要是取出了第一个textarea标签的值,然后通过JSON解析了一下,取出waf_bd8ce2ce37放到window对象中。

        

<textarea id="renderData" style="display:none">{"_waf_bd8ce2ce37":"LqEzfvRqcAZex7znaTuQGzK+iheTB++U2MXxx/yK3HU="}</textarea>
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="aliyun_waf_aa" content="371ac51ab53fc53eb6bf9aa462a72e9f">
        <meta name="aliyun_waf_oo" content="var _0x2576duCiQ','MOvsy">
        <script>
            function getRenderData() {
                var dataTag = document.getElementById('renderData');
                var renderData = dataTag.innerHTML;
                return renderData
            }
            ;var renderData = JSON.parse(getRenderData());
            window._waf_bd8ce2ce37 = renderData._waf_bd8ce2ce37;
        </script>
        
        <script>大量混淆JavaScript代码.......</script>

       

        然后接着运行,可以发现进入了第二个script,也就是运行了大量混淆的js代码,然后接着会进入到一个for循环。大概长这样。当执行到里面的ah += (aq = k['n'][aF(Wf.x)][aF(Wf.r)][aF(Wf.K) + 'r']('s', 'i', h[aF(Wf.j)](h[aF(Wf.f)](h[aF(Wf.A)](G), ak), h[aF(Wf.i)])))(aW[ak], ak),这一句时,就会进入无限debbuger。

        无限debbuger会不断地生成新的vm虚拟机文件执行debbuger语句。

        由于每运行一次就会进入一个新的vm文件debbuger,这也就导致我们没有办法通过never parse here取消debbuger。严重影响我们分析js的运行堆栈,也会导致我们下的cookie hook没办法调试。

        并且使用重写debbuger原型链的方式和重置debbuger函数的方法,全部都失效了,如下图所示,包括重写eval或者定时器的操作也没用。还是会进入无限debbuger。(目前不知道具体的原因是什么,但是可以推断里面一定做了检测,然后将debbuger强制还原了)

        

        二、解决方案

        解决办法就是使用新版Firefox浏览器提供的断点调试控制功能,必须要最新版的Firefox浏览器采用这个功能,开启方法如下:

        首先开启全局断点,F12——调试器——找到script勾选

        接着清除所有浏览器缓存和cookie,刷新页面。确保程序在第一个JS脚本断住。

        然后重点来了,将“在调试器语句上暂停”和“异常处暂停”取消勾选,一定要是最新版才有这个功能。

        然后继续F8,一直到无限debbuger文件执行完毕之后,再次重新勾选上这两个选项。

        然后你就会发现,无限debbuger已经没有了,你可以继续调试了。这里我们尝试往下走。可以看到都是可以正常执行的。

        我们尝试写一段脚本注入,hook一下cookie的生成,可以看到正常hook到了。

        当然使用油猴脚本也是可以的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值