纯干货:微软漏洞中国第一人黄正——如何用正确姿势挖掘浏览器漏洞(附完整 PPT)|硬创公开课
|
我们需要去构建 fuzz 生成算法用的字典,通常可以写爬虫到 MSDN、MDN、W3C 去抓取,还有可以用 IDA 分析 mshtml 找隐藏的属性键值,还可以看浏览器源码的头文件。我们需要去构建全面的字典,去覆盖浏览器的各个特性。
网上也有些自动构建字典的方法,可以参考 var elements = [“abbr”, “acronym”, “address”, “article”, “aside”, “b”……]; for (var i = 0; i var element = document.createElement(elements[i]); for (var key in element) { if (typeof element[key] == "function") { function_list.push(key); } } 构建出来的字典像这样:
再来一个生成算法,用一个CSS生成算法来举例,使用刚才收集回来的字典,随机生成测试用的CSS。
好了,有了源材料和随机生成方法,现在你可以生成测试样本了。
然而还有一个大问题: 如果只是这样随机生成,跑一年有可能会出来一个有效的崩溃,这是个很可悲的事情。为什么???? 一是因为测试的总样本集非常大,比如一共有110个html标签的类型,如果我们随机创建10个,那就是110的10次方种可能,这是个超级大的数,大到你可能永远都跑不完,二是前辈们可能10年前就跑过了,能发现的问题早就报告修复完了。 所以FUZZ的核心是样本生成算法。 我们需要新的样本生成策略,去发现别人发现不了的漏洞。曲博在 2014 BlackHat 分享了一个有意思的故事: 曲博他老婆的iPhone屏幕坏了,让曲博修,他拆开后,装上了新屏幕,差不多快好了,发现多了两个螺丝,摄像头不见了…… 最终iPhone废了 QU BO 得出来的启示是: 工程师把东西拆开的时候容易犯错误,工程师把东西恢复的时候容易犯错误。 (编辑:PHP编程网 - 湛江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |







