原创 楼兰 楼兰学习网络安全
微信号 LLSecurity
功能介绍 分享计算机知识
__发表于
收录于合集
在读《风控要略:互联网业务反欺诈之路》的时候,设备指纹章节中提到了可以通过检测控制台是否开启作为WEB作弊环境的检测方案之一。
可见:第四章 设备指纹
又想到之前在真实环境中遇到过,所以学习一下。
有时候我们在测试一个站点的时候,刚打开F12,就发现暂停了,如下图所示,便可以判断目标页面做了JS反调试处理
做JS反调试通常是通过检测控制台是否开启,当检测到控制台开启了,则进入反调试逻辑
检测控制台是否开启的一些方案:
1、监听按键
如用户按F12、Ctrl+Shift+i的时候
2、窗口尺寸变化
利用打开控制台后HTML窗口的尺寸变化作为判断标准,如下是一个采用此方案作为检测依据的项目
https://github.com/sindresorhus/devtools-detect
3、debugger命令的执行时间
打开开发者工具后,在遇到debugger时,会进入暂停,在debugger之前记录时间start,debugger之后记录时间end,通过判断end与start的时间差来判断用户是否开启控制台。
尝试写一个简单的反调试代码,用浏览器访问的时候正常显示,打开开发者工具后则会暂停
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Debugger</title>
</head>
<body>
<h2>Hello Debugger</h2>
<script type="module">
setInterval(function() {
debugger
}, 1000);
</script>
</body>
</html>
我的Chrome是英文显示,Firefox是中文显示
停用断点功能,简单粗暴,缺点是你自己也无法使用断点。
Chrome - Sources - Deactivate breakpoints (Ctrl + F8)
FireFox - 调试器 - 停用断点
为断点设置条件,当设置的条件表达式为真时,调试器才会暂停。当设置为false
时,则永远不会暂停。
Chrome - 右键 - Add Contitional Breakpoint
设置为false
Firefox - 右键 - 添加条件
类似白名单,在指定的位置不暂停。
Chrome - 右键 - Never Pause Here
Firefox - 右键 - 永不在此处暂停
可以直接替换响应包中的debugger关键字
BurpSuite - Proxy - Options - Match and Replace
将debugger
关键字设置为console.log('debugger')
这个时候我们再打开开发者工具时,便可以看到没有进入暂停页面
在fofa中搜索body里面有bebugger关键字的WEB站点,选一个 http://www.fyw0.cn/
反调试逻辑
1、每1ms执行一次检测
2、在开启开发者工具的时候进入调试
2、通过debugger语句执行的时间是否小于50ms,判断是否重载页面
这里的逻辑比较简单且只有一个debugger,所以通过 设置断点条件 或 不在此处暂停 绕过反调试非常快捷。
https://stackoverflow.com/questions/7798748/find-out-whether-chrome-console- is-open
预览时标签不可点
微信扫一扫
关注该公众号
知道了
微信扫一扫
使用小程序
取消 允许
取消 允许
: , 。 视频 小程序 赞 ,轻点两下取消赞 在看 ,轻点两下取消在看