首页 > 其他分享 >js无限debugger学习总结

js无限debugger学习总结

时间:2022-08-28 03:00:48浏览次数:89  
标签:function debugger script js 无限 arguments var

静态js代码debugger

1. 几千个含有debugger的script标签

<script>
    debugger;
</script>
<script>
    debugger;
</script>
<script>
    debugger;
</script>

... 重复几千行

 

2. 死循环debugger

while(1){
    debugger;
} 

解决方案

使用抓包工具修改响应,比如fiddler。或者使用 requestly(基于js)

 

3. 特殊情况: debugger语句在函数里

function check(){
  debugger;  
}
check(); 

解决方案

在check赋值后但还没有执行前,将check函数置空

check = function(){}

 

 

动态代码的debugger

1. eval debugger

var code = "de";
code += "bu";
code += "gger";
eval(code); // eval("debugger"); 

解决方案

// 需要使用油猴或者可以fiddler抓包工具注入该js    
var oldEval = window.eval;
window.eval = function(){
    arguments[0] = arguments[0].replace(/debugger/g, "");
    return oldEval.apply(this, arguments);
}        

 

2. Function debugger

new Function("debugger")();

解决方案

var oldFunction = Function.prototype.constructor;
Function.prototype.constructor = function(){
    arguments[0] = arguments[0].replace(/debugger/g, "");
    return oldFunction.apply(this, arguments);
}

 

3. 动态插入script标签

var script = document.createElement("script");
script.text = "debugger";
document.head.appendChild(script);

解决方案

var setter = Object.getOwnPropertyDescriptor(HTMLScriptElement.prototype, 'text').set;
Object.defineProperty(HTMLScriptElement.prototype, 'text', {
    set: function (val) {
        // 当调用 script.text = "debugger";该方法将被调用
        val = val.replace(/debugger/g, "");
        return setter.call(this, val);
    }
});

 

 

条件debugger

上面的debugger属于手动移除也不影响正常逻辑的执行

有些网站属于检测到控制台打开就会执行错误的逻辑永久也走不到正常的逻辑里

 

 

 

标签:function,debugger,script,js,无限,arguments,var
From: https://www.cnblogs.com/re-is-good/p/16631913.html

相关文章

  • Python 报错:json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char
    报错内容:json.decoder.JSONDecodeError:Expectingvalue:line1column1(char0) 报错代码:print(res.json()) 报错原因:打印请求返回值报错该接口返回值......
  • identity4 系列————纯js客户端案例篇[四]
    前言前面已经解释了两个案例了,通信原理其实已经很清楚了,那么纯js客户端是怎么处理的呢?正文直接贴例子哈。https://github.com/IdentityServer/IdentityServer4/tree/ma......
  • js删除css样式
    js删除css样式_百度知道 https://zhidao.baidu.com/question/680409425108037292.html 1、如果使用class加的样式的话,可以使用document.getElementById("objid......
  • js给onclick事件赋值,动态传参数实例解说
    js给onclick事件赋值,动态传参数实例解说_javascript技巧_脚本之家 https://www.jb51.net/article/35107.htm我们先看看错误的例子Html代码复制代码代码如下:<body><in......
  • Js 函数eval() 用法记录
    js函数eval()用法记录问题描述:遇到一串数据responseText,在浏览器中使用console函数输出responseText这个字段整体的时候,eg:console.log(“—————–responseText—-“......
  • js中alert的换行问题
    关于alert的内容还行问题,参考了很多人的意见,在这里我做一个总结,当然我们平时只要使用一种能达到效果的方法即可:这个与使用的浏览器也有关系在使用alert弹窗过程中,对于大......
  • js声明数组的四种方式
    js声明数组的四种方式_麦客子的博客-CSDN博客_js声明数组的写法 https://blog.csdn.net/a911711054/article/details/72869324<!DOCTYPEhtml><htmllang="en"><head......
  • vscode可以通过改json让程序运行完不退出
    如图改相应的launch.json至于D盘test.exe是因为有中文路径"program":"C:\\Windows\\System32\\cmd.exe","args":["/c","${fileDirname}/${fileBasenameNoExtension}.......
  • js 函数的参数长度问题
    js函数的参数长度问题_Jamie_java的博客-CSDN博客_js传参数有长度限制 https://blog.csdn.net/baidu_27062827/article/details/52276635js函数,如果传入参数的长度太长......
  • js - 修改弹出窗口的标题
    js-修改弹出窗口的标题_xsscacy的博客-CSDN博客 https://blog.csdn.net/shen813/article/details/9087029先利用window.open(url)打开一个窗口,然后在利用设置document.t......