AFL——American Fuzzy Lop的基础使用

AFL——American Fuzzy Lop的基础使用

因为某些奇怪的原因,我一个没搞过pwn的得来搞代码fuzz,只好学一下,顺便记一下。

AFL的安装

在部分源有的情况下可以直接使用apt-get install安装
或者开启docker直接使用

或者传统安装

wget http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz
tar xvf afl-latest.tgz
cd afl-2.52b #根据自己下载的版本进行替换
make && make -C llvm_mode CXX=g++
make install

AFL内含工具

AFL提供了许多工具
常用的有
·afl-gcc#gcc与g++编译
·afl-clang#clang对于c与c++的封装编译器
·afl-tmin#简化缩小输入例
·afl-cmin#同上
·afl-showmap#对文件进行执行path跟踪
·afl-analyze#对输入列进行分析,查找有用的字段

基础使用事例

首先我们先随便写个程序

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

int crash(char *str)
{
    int len = strlen(str);
    if(str[0] == 'O' && len == 8)
    {
        raise(SIGSEGV);
    }
    else
        printf("noting happened!\n");
    return 0;
}

int main(int argc, char *argv[])
{
    char buf[10]={0};
    gets(buf);//栈溢出
    printf(buf);//格式化字符串漏洞
    printf("\n");
    crash(buf);

    return 0;
}

格式化字符串漏洞和栈溢出就不多说了,我个搞web的都有了解,更别说专门搞pwn的了。
为了更加的方便去理解,还写了个crash函数,如果输入的字符串,首字母为O且长度为8,那么就会抛出错误。

对程序进行编译插桩

将刚才的文件保存为test.c

afl-gcc test.c

在这里插入图片描述

instrumented 那一行出现就说明编译插桩成功

我们还得将输出改一下,不让他输出到特定的处理程序,而是将coredumps输出为文件,好让我们后期利用。

在使用kali2020的时候,因为默认没有root权限,建议提前输入sudo -s进入超级管理员模式。

 sudo -s
 echo core > /proc/sys/kernel/core_pattern

对输出的a.out文件进行测试

我们可以使用echo命令传参给他

echo "hello" |./a.out

在这里插入图片描述

再试试构造一个会crash的字符串

 echo "OOOOOOOO" |./a.out

在这里插入图片描述

成功报错

对程序进行FUZZ测试

我们先创建两个文件夹

mkdir in out

然后我们在in文件夹中创建一个包含 hello的文件

然后我们就可以进行fuzz测试啦

afl-fuzz -i in -o out -- ./a.out

在这里插入图片描述
在这里插入图片描述

看到旁边标红的uniq crashes就是我们想要的结果

感觉跑了差不多了,就可以自己ctrl c停下来了。

进入out文件夹,再进入crashes文件夹

我们就可以看见跑出来的crash记录ng)

在这里插入图片描述

cat一下,看一下其中的内容。
在这里插入图片描述

其中一个和我们要构造的差不多

这应该就是AFL使用的一个基本过程了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值