FUZZ初学笔记(二)
测试数据生成和模糊启发式
如何生成测试数据的实现方法只是待解决问题的一部分,同等重要的是决定生成什么样的测试数据。比如,我们正在创建一个模拟器以分析一个FTP服务的健壮性,在进行FTP的请求中,我们要加以研究的是数据传输格式和FTP服务器接收后对数据的处理方式模糊启发式
在模糊字符串或者模糊数据列表中所包含的特定的潜在危险值,称为模糊启发式(fuzzheuristics)
2.1 整形值:在新的改进整形测试试用列表中,选择两个极限边界(0和0xFFFFFFFF)测试用例是很明显的,可能所提供的数字被作为内存分配程序的大小参数。通常额外空间被指定大小所容纳一个头,尾或者终止空字节,例如:
int size = read_ccr_size(packet);
//save space for NULL termination
buffer = (char *)malloc(size + 1);
从上面的来看的话,大小是从packet里面获取,当然一般大小是不会这样由用户进行分配,这里只是提供一个测试用例,那么这里分分配的大小将会在0~FFFFFFFF,被指定的大小可能会被之前的值减去进行分配,当目标程序知道它不准备将所有的指定数据拷贝到新分配的缓冲区时,就会发生这种情况。整形因为为四个字节,所以当运算结果超出32位整数的最大范围就会发生溢出,还有当减法结果小于0就会产生下溢,所以在