假设我有一个程序以指针作为输入。如果没有关于指针的结构的先验知识,模糊器如何创建实际上可以命中程序内部的有效输入?为了使这更具体,想象一个人工C程序
<div class="bg-primary">
<p>Some text</p>
</div>
<div class="bg-secondary">
<p>Hello World</p>
</div>
<div class="bg-primary">
<select class="selector">
</select>
</div>
在某些情况下,测试程序首先检查输入格式。如果输入格式不好,则会引发异常。在这种情况下,除了异常提升声明之外,模糊器如何才能达到程序点?
答案 0 :(得分:3)
大多数模糊器对程序的内部结构一无所知。不同的模糊器以各种方式解决了这个问题:
然而,近年来,一种新型的模糊器得到了发展 - 基于反馈的模糊器 - 这些模糊器在有效(或非有效)输入上执行突变,并根据他们从模糊程序收到的反馈,他们决定如何以及如何变异下一个。通过在编译时通过注入跟踪,通过在运行时修补程序注入跟踪代码或使用硬件跟踪机制来检测程序执行来接收反馈。其中首先是AFL(你可以阅读更多关于它here)。
答案 1 :(得分:1)
模糊器会在攻击面上抛出各种输入的随机组合。目的是寻找任何机会让“黄金BB”通过输入检查并得到可以进一步探索的回应。