HTML5新特性Bug:这12行代码分分钟让你浏览器崩溃iPhone重启

2016-4-17 / 4 评论 代码人生 / Mrxn

本文共计 840 字,感谢您的耐心浏览与评论.

使用这十二行JavaScript代码能让firefox、chrome、safari等众多浏览器崩溃,甚至让iPhone重启?!


起因

今天刷推特的时候发现Cyber Security@cyber__sec的推文让人眼前一亮:

Crash firefox, chrome, safari browsers, and also restart iPhone using this javascript code. #dos #0day #exploit
//使用下面这段JavaScript代码能让firefox,chrome,safari浏览器崩溃,而且还能让iPhone重启。
2016-04-17 14_04_54.png


完整HTML代码如下:


<html>
<body>
<script>
var total="";
for (var i=0;i<1000000;i++)
{
    total= total+i.toString();
    history.pushState(0,0,total);
}
</script>
</body>
</html>
demo:(温馨提示:请保存浏览器其它窗口的编辑任务)


http://api.mrxn.net/demo.html  (点击一下,又不会怀孕!)


接来下会发生什么?

点开以后,我的状态是这样的:

14532972774931.gif

如果你是PC端用户,点开链接以后,电脑CPU内存极有可能一路狂飙直至浏览器崩溃卡死!

如果你是移动端(安卓、iPhone)用户,点开链接以后你的浏览器会闪退!在微博、微信客户端点开链接同样会闪退。至于在推文中提到的让iPhone重启,这一现象倒是没有出现。22:49 修正:iPhone用Safari打开之后链接之后,手机注销重启了!…

思考

这是Bug还是0day?为什么会有这一现象?如何实现的?

有哪些比较有意思的利用姿势?(我先来个:当在执行MITM中间人攻击的时候,可以注入这一段js,来个恶搞整蛊。然后都懂的...)

欢迎大家在评论中发表自己的观点 


标签: JS html5 bug 浏览器崩溃

转载:转载请注明原文链接 - HTML5新特性Bug:这12行代码分分钟让你浏览器崩溃iPhone重启


4条回应:“HTML5新特性Bug:这12行代码分分钟让你浏览器崩溃iPhone重启”

  1. 大神

    history.pushState(0,0,total);
    方法是 HTML5 的一个 API,用于向history添加当前页面的记录。简单来说就是在不刷新页面,也不打开新页面的情况下,改变浏览器地址栏中的URL。
    这里的代码: history.pushState(0, 0, total); 只能起到一个效果,就是修改URL(只能修改当前目录后的字符,无法修改全部域名。且不会发生跳转或发送请求)。然后这里代码循环了1000000次,也就是说URL修改了1000000次,每次新的URL都是之前一次的后面再加上 i.toString() 。这样快速不停地向history中添加记录,最终就会导致内存占用迅速增大到机器无法承受,然后浏览器崩溃了………

  2. fog

    没崩溃,CPU跑满

  3. 沧澜

    某位大神的答案是内存溢出,不知道真正发生的原因是什么。。。。。


发表评论

{view_code_no}