-
-
[分享]ubuntu16.04 fuzzing工具AFL安装使用以及问题解决
-
2020-9-6 14:08
6358
-
[分享]ubuntu16.04 fuzzing工具AFL安装使用以及问题解决
AFL安装
首先在github上下载afl
gitclone https://github.com/mirrorer/afl
然后运行
make
sudo make install
下来得设置一下core_pattern
sudo su
echo core >/proc/sys/kernel/core_pattern
到这一步有源码的算是安装成功了
有源码AFL插桩程序
先创建fuzz_in和fuzz_out两个文件夹
然后编辑一个简单的c语言程序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<signal.h>
int fun(char *buf)
{
if(buf[0]='a'&&strlen(buf)==5)
raise(SIGSEGV);
}
int main()
{
char buf[100]={0};
gets(buf);
printf(buf);
fun(buf);
return 0;
}
编译
对刚才的代码进行编译
afl-gcc -g -o test test.c
如果是c++则变为afl-g++
接下来在fuzz_in文件夹里面创建一个test文件 然后随便输入点东西
开始fuzz
afl-fuzz -i fuzz_in -o fuzz_out ./test
从fuzz_in中输入 输出在fuzz_out中
执行完后的页面
对参数介绍一下
process timing
分别是运行时间 最后一次发现新执行路径时间 最后一次崩溃时间 最后一次超时时间
overall results
这里是 总周期数 总路径数 崩溃次数 超时次数
stage progress
这是fuzzing策略 进度 目标执行总次数 目标执行速度
上面需要注意的是三个参数
1.last new path:入伏哦报错需要及时修正命令行参数
2.cycles done:颜色是黄蓝绿变化 变绿就可以ctrl+c停止了
3.uniq crashes:是我们等会查看的crash的数量
crash分析
我们可以在fuzz_out的crashes文件夹里面看到我们需要分析的crash
用xxd命令将文件的十六进制显示出来
我们可以看到三次crash的信息
分析一下这三次的情况
1.第一种是首字母为a并且字符串长度为6的异常退出
2.第二种是典型的栈溢出
3.第三种是而=格式化字符串
其实只要出现在这里面的就是一种漏洞情况 这样 我们的程序的漏洞已经被全部泄露出来了
无源码AFL插桩程序
我们依然用钢材的代码进行无源码测试 不过这次使用gcc编译
gcc -g -o test1 test.c
然后进入afl文件夹执行
cd qemu_mode
./build_qemu_support.sh
我们发现缺少库文件libtool
执行命令安装库文件
sudo apt-get install libtool-bin
继续执行发现缺少automake 继续下载就行
sudo apt-get install automake
运行发现还少bison 继续下载
sudo apt-get install bison
接下来发现害缺少库的话一个个安装就行 我这里只缺少这几个库 执行就ok啦 等待build完成后开始make
cd ..
sudo make install
开始fuzz
我们依然要创建fuzz_in fuzz_out两个文件夹
然后执行
afl-fuzz -i fuzz_in -o fuzz_out -Q ./test1
发现已经开始fuzz了
我们同样可以看到3个crash文件
(第一次发帖 都是简单的东西 以及碰到的问题解决)
参考
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
最后于 2020-9-14 09:25
被Ring3编辑
,原因: