锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

FUZZ入门1

时间:2022-11-30 09:00:00 2静态交流断电延时继电器zsj

AFL-Fuzz介绍

Fuzzing它是一种模糊的测试方法,通过结构测试输入大量测试软件来发现软件中的漏洞。CTF中,fuzzing可能不常用,但在实际的漏洞挖掘中,fuzzing由于其简单高效的优点,成为主流的漏洞挖掘方法。

AFL则是fuzzing一个好用的工具,全称是American Fuzzy Lop,由Google安全工程师Micha? Zalewski开发开源fuzzing测试工具可以有效地执行二进制程序fuzzing,挖掘可能存在的内存安全漏洞,如栈溢出、堆溢出、UAF、double free等。因为需要在相关代码处插桩,AFL主要用于测试开源软件。当然配合QEMU闭源二进制代码也可用于其他工具fuzzing,但执行效率会受到影响

工作原理:

自动生成测试用例,探索二进制程序例,探索二进制程序中的新执行路径。AFL也支持直接对没有源码的二进制程序进行测试,但需要QEMU的支持。

AFl下载

american fuzzy lop进入官网后,下载压缩包,然后在虚拟机中解压。(实验环境ubantu 18.打开文件并输入以下代码

     make     sudo make install 

之后输入afl-之后tab如果出现补充指令,安装将成功。

实验

这里有一个在线例子初探AFL-Fuzz - 先知社区

可以看出,至少有6个漏洞可以使程序异常,前四个是输入字符特征和长度异常会使程序异常,后两个漏洞是由于get和printf特别是函数不限制输入范围,get可以覆盖的bp和return addr导致栈溢出,而get printf可组合泄漏get输入字符串偏移触发格式化字符串漏洞。

我们先用gcc编译源文件无任何保护,然后使用ida打开文件发现很正常

符合源文件的逻辑,然后再使用afl进行编译

afl-gcc -g -o afl_test afl_test.c

我们在用ida打开编译文件后,发现比源文件多了一些afl文件可以tab跟进,这就是fuzz打桩试验。

然后建立两个文件夹:fuzz_in和fuzz_out,用于存储程序的输入和fuzz的输出结果

在fuzz_in还需要创建一个testcase文件,在这个程序的例子里,随便输入一些字符。

afl-fuzz -i testcase -o output ./afl_tes

可以开始fuzz程序。第一次操作可能会遇到提示输入echo core >/proc/sys/kernel/core_pattern

根据提示,由于未知原因,此时需要更改权限输入

sudo bash -c 'echo /home/zsj/Desktop/core-%e-%p-%t > /proc/sys/kernel/core_pattern'

然后进入界面,解释具体的界面参数。

carshes文件夹可以看到疑似漏洞

可以看出,第一个文件标记为栈溢出漏洞,第四个文件标记为格式化字符串漏洞。说实话,其他人都不熟悉。

参考资料

初探AFL-Fuzz - 先知社区

【AFL学习笔记(一)C程序有源码fuzz - 百度文库

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章