猿人学第二题—混淆 动态cookie检测

文章讨论了如何检测和处理混淆动态cookie的几种方法,包括代码格式化检测的解决策略,避免全局变量global的使用,处理setInterval在不同环境的行为,以及修复被篡改的console.log导致的浏览器卡死问题。解决方案包括代码压缩、设置空的setInterval、保存原始console.log功能以及补充环境变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单的document.cookie,location.reload等就不写了

1、代码格式化检测

这里应该是利用了字符串正则匹配性能低的特点,恶意编写适应更多字符串、看起来更加"通用"的表达式,让匹配时间加长,达到卡死的效果

var _0x18813f = _0x5b4f47["constructor"]("return /\" + this + \"/")()["compile"]("^([^ ]+( +[^ ]+)+)+[^ ]}");

image-20230722221934099

解决方式:压缩代码

2、检测global和navigator.vendorSub

image-20230722222135386

解决方法:

可以删除global,要让它执行catch逻辑

3、检测setInterval

nodejs中的setInterval和浏览器不太一样,浏览器的setInterval传入的第一个参数可以使字符串,但是nodejs中第一个参数必须是函数

image-20230722222428075

解决方法:

将setInterval置空

setInterval = function (a,b){
   
}

思考

这里原代码是下面这样的,这会导致_0x4464ae函数先执行,再将返回值传给setInterval,所以可以置空setInterval

image-20230722225508527

如果是这样的源代码

setInterval(_0x4464ae, 1000);

则这里不能直接设置setInterval为空,需要hook下setInterval,hook代码如下

setInterval = function (a,b){
    if(typeof a ==='string'){
        return Function(a)()
    }
    a()
}

这个代码逻辑必须这么写(函数执行一次),因为setInterval如果开启定时循环执行,那么程序就不会停下来,如果直接置空,则_0x4464ae函数未执行,qz变量就不存在,而有另一段代码对qz做了判断,就会走错误逻辑

image-20230722223112808

4、console.log输出检测

其中有一个eval执行了下面的代码

console = new Object()
console.log = function (s) {
    while (1){
        for(i=0;i<1100000;i++){
        history.pushState(0,0,i)
            }
    }

}
console.toString = '[object Object]'
console.log.toString = 'ƒ toString() { [native code] }'

这样当我们在调用console.log方法时不断添加大量的历史记录,导致浏览器卡死,并且调用console.dir也会提示不是函数

解决方案:在程序开头预存console.log

MyConsole = console.log

补环境

这样的话,补下面的代码就可以直接获取了,第一次页面返回的代码不需要做任何修改

navigator = {
    vendorSub:''
}
MyConsole = console.log
document = {
    cookie:''
}
location = {
    reload:function(){}
}
delete global;
setInterval = function (a,b){
    if((typeof a)=='string'){
        return Function(a)()
    }
    a()
}

image-20230722224607200

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞得更高肥尾沙鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值