全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
12
返回列表 发新帖
楼主: Tou

用开发者工具查看这个网站就直接干死机怎么弄的

[复制链接]
发表于 2019-11-22 13:10:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2019-11-22 13:18:43 | 显示全部楼层
夕日 发表于 2019-11-22 12:47
源码中存在这么一段混淆了的js代码

看不太懂,但很明显存在一堆复杂的递归调用
  1. 'use strict';
  2. /** [url=home.php?mod=space&uid=26679]@Type[/url] {!Element} */
  3. var x = document.createElement("div");
  4. Object.defineProperty(x, "id", {
  5.   get : function() {
  6.     /** @type {string} */
  7.     var definitionLineHash = "";
  8.     /** @type {number} */
  9.     var default_favicon = 0;
  10.     for (; default_favicon < 1000000; default_favicon++) {
  11.       /** @type {string} */
  12.       definitionLineHash = definitionLineHash + default_favicon.toString();
  13.       history.pushState(0, 0, definitionLineHash);
  14.     }
  15.   }
  16. });
  17. console.log(x);
复制代码


这段代码真是牛皮,疯狂写入历史记录
发表于 2019-11-22 14:05:50 | 显示全部楼层
simonfire 发表于 2019-11-22 12:59
看看他是怎么判断打开开发者选项的,有的是判断屏幕宽度,这个你开发者在新窗口打开他就检测不到了。 ...

测试了在开发者模式打开 一样被检查到
发表于 2019-11-22 14:32:25 | 显示全部楼层
rule 发表于 2019-11-22 12:58
第三方抓包工具了解一下

fiddler了解一下
发表于 2019-11-22 15:14:13 | 显示全部楼层
本帖最后由 simonfire 于 2019-11-22 15:17 编辑

  1. eval(`var x=document.createElement('div');Object.defineProperty(x,'id',{get:function(){var a="";for(var i=0;i<1000000;i++){a=a+i.toString();history.pushState(0,0,a)}}});console.log(x);`)
复制代码

原理就是chrome打印obj的时候会获取id,然后他这里自定义了一个事件,写入历史记录1000000次,所以浏览器就崩了,用非chrome的浏览器调试就行了



参考知乎回答[2]:https://www.zhihu.com/question/24188524/answer/116988937
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-8 06:29 , Processed in 0.060006 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表