Fuzz初尝试:AFL安装和使用

AFL初次尝试

看了一些fuzz的文章但是一直没有做过小的demo,这次算是入门级别的尝鲜。

AFL的安装

安装环境:vm虚拟机、Ubuntu18

  1. 首先检测LLVM和CLANG是否安装:
sudo apt-get install clang
sudo apt-get install llvm

安装时出现的问题:

E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?

解决方案:

ps -e | grep apt

在这里插入图片描述

然后执行sudo kill 进程号

在这里插入图片描述

  1. 在目录下下载包
wget http://lcamtuf.coredump.cx/afl/releases/afl-2.52b.tgz
tar -zxvf afl-2.52b.tgz
cd afl-2.52b
make
sudo  make install

然后尝试使用afl-fuzz命令

选择目标程序

本人采用了网上的简单代码来进行测试

  • 创建一个testfile文件夹,然后在该文件夹下创建测试文件afl_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
  • 这里的gcc -g是在编译的时候,生成调试信息,该程序可以被调试器调试。
  • 接着建立fuzz_in文件夹,创建输入文件testcase,输入文件中写几个简单单词,fuzzing时会产生变异。
mkdir fuzz_in
echo "hello" > fuzz_in/testcase
  • 执行下列语句就开始fuzz了
afl-fuzz -i fuzz_in -o output ./afl_test

结果出错了

在这里插入图片描述

解决方案:

$ sudo su
$ echo core >/proc/sys/kernel/core_pattern
  • 再次执行下列语句开始fuzz
afl-fuzz -i fuzz_in -o output ./afl_test

在这里插入图片描述

  • Ctrl+c手动终止fuzz

参考文章,感谢大佬!
https://blog.csdn.net/weixin_50972562/article/details/123379898

https://blog.csdn.net/weixin_39448417/article/details/99703723

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值