AFL环境配置过程记录及遇见的问题

Posted weixin_42877778

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AFL环境配置过程记录及遇见的问题相关的知识,希望对你有一定的参考价值。

2022年6月14日

今天上午首先看了一下AFL的说明并将其下载到了本地。通过百度了解到AFL只针对linux的环境,而如果需要在windows下使用则需要下载winAFL。
因此本文的AFL必须在linux环境下进行环境配置,在下载AFL时我是直接在github下载的AFL到win10主机结果发现win10不能使用因此直接将压缩包复制到ubuntu虚拟机中的。
AFL下载链接
如果这个链接不能下载可以直接百度进行github主页面然后直接搜索AFL也能找到该文件并进行下载。
接下来开始进行环境的部署,参考此链接进行安装,这个链接中给了一个不同的下载地址也可以尝试一下
AFL环境配置

上面这个地址无效了,又需要安装一次AFL,因此将使用过的指令再记录一遍:


git clone https://github.com/google/AFL
//先安装gcc 
sudo apt-get install gcc
//查看gcc版本看是否安装成功
gcc -v
cd /AFL
make
//如果显示make command not found 运行下面两条命令
apt install make
apt upgrade

//如果上面make没有执行成功再执行一遍make指令
sudo make install
//afl安装完成

遇见问题

由于linux虚拟机没有经常使用导致很多包都没有进行安装,因此在安装过程中难免遇见缺少包的情况,而在安装包的过程中也遇见了一些问题并进行记录

问题一:执行make报cc:not found

*] Checking for the ability to compile x86 code… /bin/sh: 1: cc: not found

Oops, looks like your compiler can’t generate x86 code.

Don’t panic! You can use the LLVM or QEMU mode, but see docs/INSTALL
first. (To ignore this error, set AFL_NO_X86=1 and try again.)

make: *** [Makefile:53: test_x86] Error 1

该问题出现的原因是没有安装gcc进行AFL的编译,因此接下来根据上面的教程需要使用以下命令安装gcc

yum -y install gcc gcc-c++ libstdc++-devel 

然而 实际上由于我们使用的系统是ubuntu,根本没有必要非得用yum呀,于是咋们换一个方法直接使用apt-get命令就可以了。

sudo apt-get install gcc

如果找不到gcc的话先执行一下这条语句再执行上一条语句

sudo apt-get update

接下来gcc -v就可以看到gcc的版本了

接下来再执行以下命令就可以安装afl了

make
sudo make install

接下来使用上面教程提到的方法输入afl -fuzz显示命令找不到,但是我们直接输入一个测试程序发现是可以运行的

所以先不管它说的afl找不到,先来测试一下afl是否能正常运行
创建测试用例可以参考这个链接
点击
首先返回上一级目录,创建一个test测试文件夹,并创建一个test.c文件
测试用例(复制的上面链接给出的):

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
#include <string.h> 
#include <signal.h> 

int vuln(char *str)

    int len = strlen(str);
    if(str[0] == 'A' && len == 66)
    
        raise(SIGSEGV);
        //如果输入的字符串的首字符为A并且长度为66,则异常退出
    
    else if(str[0] == 'F' && len == 6)
    
        raise(SIGSEGV);
        //如果输入的字符串的首字符为F并且长度为6,则异常退出
    
    else
    
        printf("it is good!\\n");
    
    return 0;


int main(int argc, char *argv[])

    char buf[100]=0;
    gets(buf);//存在栈溢出漏洞
    printf(buf);//存在格式化字符串漏洞
    vuln(buf);

    return 0;


执行以下语句进行编译:

afl-gcc -g -o afl_test test.c
//默认编译生成的可执行文件是无法使用 gdb 来跟踪或调试,而添加了g以后生成的可执行文件是可以使用-g来进行调试的 -i指定输入文件的地址,-o指定输出文件所在的地址

//接着建立fuzz_in文件夹,创建输入文件testcase,输入文件中写几个简单单词,fuzzing时会产生变异。
mkdir fuzz_in
echo "hello" > fuzz_in/testcase
//进行fuzz
afl-fuzz -i fuzz_in -o output ./afl_test

结果执行的时候报这个问题:

Your terminal is too small to display the UI. Please resize terminal
window to at least 80x25.

也就是显示的终端界面太小了,直接放大就可以看到了,执行结果如下:
使用ctrl+C可以退出AFL的运行。

好了,以上就是配置AFL的整个过程,只能说如果一条路走不通的话不如试试换个方式吧,下面的问题主要是因为按照yum导致的

问题二:安装yum报错

由于系统中并没有安装yum的库,因此在执行上一条语句的时候会出现如下的错误。

$ yum -y install gcc gcc-c++ libstdc++-devel
//报如下错误
Command ‘yum’ not found, did you mean:

command ‘num’ from deb quickcal (2.4-1) command ‘sum’ from deb
coreutils (8.30-3ubuntu2) command ‘uum’ from deb freewnn-jserver
(1.1.1~a021+cvs20130302-7build1) command ‘zum’ from deb perforate
(1.2-5.1)

Try: sudo apt install <deb name >

因此首先要对该库进行安装,参考以下链接
安装yum库
在命令的执行过程中执行到如下语句时又出现新的错误:

$ ./yummain.py install yum
bash: ./yummain.py: /usr/bin/python: bad interpreter: No such file or directory

百度说可能是因为python的版本存在不兼容性的问题,接下来参考问题三
在解决了python版本的兼容性问题后又出现了一个新的问题,

$ ./yummain.py install yum
File “./yummain.py”, line 74
except Errors.LockError, e:
^ SyntaxError: invalid syntax

2022年6月15日

出现上面这个问题的原因还是因为python,对于ubuntu20的版本来说,python2已经从其中一处了,因此计算机中安装的是python3的版本,而yum程序的解析则是使用 的python2的版本
直接使用以下语句安装python2

sudo apt install python2

可以参考下面这个连接进行python2的安装和配置
ubuntu安装python2
然后终于配置好了python,接下来又开始报这个错

原因应该是没有rpm的库,在网上找了很多办法,都没解决,算了,虽然我系统上缺少很多库,但我不能缺心眼嘛,咋们还是换一个方法安装gcc就是了,干嘛非要yum呢,所以我有回到问题一重新使用apt-get安装gcc并成功啦,幸福来的如此之快,那就放弃整个问题啦

问题三 :python版本兼容性问题

在查看python的版本时使用以下命令却无法查看到python的正常版本。

$ python -v

Command ‘python’ not found, did you mean:

command ‘python3’ from deb python3 command ‘python’ from deb
python-is-python3

执行下列语句将Python3二进制文件’/usr/bin/python3’链接到’/usr/bin/python’作为默认python命令

update-alternatives --install /usr/bin/python python /usr/bin/python3 1

参考链接
直接执行完上一条语句就能直接查看python对应的版本号了。

总结

通过在对AFL的环境配置中,由于gcc未安装而导致的报错,从而去了解了如何安装yum(没有成功),了解了yum是依赖于python2,因此在系统中进行了python2的安装和配置
查看python列表

sudo update-alternatives --list python

设置默认版本

sudo update-alternatives --config python

输入对应的数字选择设置哪个版本为默认版本(注意数字是前面的selection对应的列)
接下来就是gcc的安装和AFL的测试过程啦!!!

以上是关于AFL环境配置过程记录及遇见的问题的主要内容,如果未能解决你的问题,请参考以下文章

为Jupyter notebook配置R kernel过程及踩坑记录

BurpSuite基础教程之基本介绍及环境配置

现开发项目遇见难题及解决方案记录

项目适配 Oracle 改造及 SSL 安全性配置问题汇总

项目适配 Oracle 改造及 SSL 安全性配置问题汇总

项目适配 Oracle 改造及 SSL 安全性配置问题汇总