首页 > TAG信息列表 > AFL

AFL/llvm_mode

llvm_mode/ 参考:https://kiprey.github.io/2020/07/AFL-LLVM-Mode/#1-简介 使用afl-clang-fast编译前,需要设置一下AFL_PATH,使其可以找到afl-llvm-rt.o 和 afl-llvm-pass.so。 export AFL_PATH=/usr/class/AFL-master/ afl-clang-fast afl-llvm-pass afl-llvm-pass中,只有一个pass

Proj CMI Paper Reading: Reinforcement Learning-based Hierarchical Seed Scheduling for Greybox Fuzzin

Abstract 背景: 细粒度的覆盖指标可以让模糊器检测到传统边缘覆盖⽆法覆盖的错误 现有算法⽆法有效地调度种子 本文: 工具:AFL++-HIER 方法: 多级覆盖度量 基于强化学习的分层调度 实验: 数据集:DARPA CGC 效果: 明显优于AFL和AFLFAST :它可以检测到 20% 以上的错误,对 180 个挑战中的

Proj CMI Paper Reading: Registered Report: Fine-Grained Coverage-Based Fuzzing

Abstract 背景: 分⽀覆盖仅提供程序行为的浅层采样,因此可能会丢弃可能对变异感兴趣的输⼊ 本文: 任务:定义更细粒度的代码覆盖率,不改变现有Fuzzer 方法: 通过将这些指标定义的测试⽬标(例如要杀死的突变体mutants to kill)明确地作为⽬标程序中的新分⽀来实现不改变现有Fuzzer 保留能够

AFL:可执行文件+变异策略

AFL 可执行文件 变异策略 AFL在随机阶段如果发现了一个新的路径,那么会给发现该路径的种子双倍的能量。 确定性变异阶段的执行次数是依赖于种子长度

AFL:记录fuzz过程中的覆盖率

AFL流程 AFL覆盖率的收集 fuzzer fork 父进程fuzzer 子进程forkserver(父子进程通过管道通信,一个传递状态,一个个传输控制命令),子进程初始化管道,并执行execve()目标程序。 target是将每个分支的执行次数用一个byte存储,而fuzzer则是进一步将这个执行次数归入不同的buckets中。 (coun

AFL++ (PlusPlus) 介绍与实践

目录一、AFL++简介缝合块AFL基础款1 基于覆盖率指标的反馈2 变异3 fork 服务器基于智能调度的加强版1 AFLFast2 MOpt基于绕过障碍的加强版1 LAF-Intel2 RedQueen变异结构化输入AFLSmart缝合怪AFL++种子调度变异器1 自定义变异器API2 Input-To-State 变异器3 MOpt Mutator插桩1 LLV

AFL白皮书&实现细节

源自AFL白皮书和个人理解 AFL白皮书地址 https://lcamtuf.coredump.cx/afl/technical_details.txt 0) 设计声明 AFL尽量不关注任何单一的操作原理,也不为任何特定的理论提供概念证明。该工具可以被认为是一组经过实践测试的黑客技术,实践结果表明它们非常有效,并且以作者当时

Coverage-based Greybox Fuzzing as Markov Chain

基于覆盖的灰盒模糊马尔可夫链 摘要 基于覆盖率的灰盒模糊(CGF)是一种不需要程序分析的随机测试方法。一个新的测试是通过稍微改变一个种子输入来生成的。如果测试练习了一条新的有趣的路径,它将被添加到种子集中;否则,它将被丢弃。我们观察到,大多数测试采用相同的少数“高频”路

AFL++初探-手把手Fuzz一个PDF解析器

CVE-2019-13288 目前漏洞在正式版本已经被修复,本文章仅供学习Fuzz过程,不存在漏洞利用的内容 这是一个pdf查看器的漏洞,可能通过精心制作的文件导致无限递归,由于程序中每个被调用的函数都会在栈上分配一个栈帧,如果一个函数被递归调用太多次,就会导致栈内存耗尽和程序崩溃。因此,远程攻

使用AFL对libmodbus进行fuzz测试

目录 下载编译libmodbus安装Preeny库为什么需要Preeny安装Preeny的前置条件编译安装 创建测试程序与样例编译测试程序生成测试用例 开始测试关于测试用例测试过程 测试结果 下载编译libmodbus 首先在github上下载libmodbus库的源码 git clone https://github.com/stephan

AFL模糊测试

一、AFL 基于覆盖率, qemu llvm等多项技术的fuzzing工具 https://github.com/google/AFL 二、使用方法 2.1安装 make make install 2.2编译目标程序 2.2.1 程序是用autoconf构建,那么此时只需要执行如下即可 CC=/usr/local/bin/afl-gcc CXX=/usr/local/bin/afl-g++ ./configure

共享内存

共享内存 dumb:随机变化 AFL最大的特点:对target进行插桩(插桩后的target可以记录执行过程中的分支信息),辅助生成变异输入(fuzzer可以使用这些信息判断这次执行的整体流程和代码覆盖)。 AFL使用共享内存从target向fuzzing driver(如果使用的是fork server,那这里的driver就是fork server)

AFL头文件

AFL头文件 config.h 配置,部分内容是和编译相关,例如变异用到的预设特殊值。 types.h 类型,重新定义了一些新的类型,例如s8。 debug.h 调试,包含自定义的函数,例如OKF。 alloc-inl.h 内存相关,提供内存相关操作 hash.h 哈希函数,参数为const void* key, u32 len, u332 seed,返回

AFL++: Combining Incremental Steps of Fuzzing Research 翻译

文章目录 简述翻译0. 摘要1. 介绍1.1 贡献 2. 最新技术2.1 American Fuzzy Lop2.1.1 覆盖率引导反馈2.1.2 突变2.1.3 Forkserver 机制2.1.4 Persistent 模式 2.2 聪明的调度2.2.1 AFLFast2.2.2 MOpt 2.3 绕开路障(Bypassing Roadblocks)2.3.1 LAF-Intel2.3.2 RedQueen 2.4

afl学习(二)变异策略

根据afl白皮书的说法,afl-fuzz大部分的(尤其是前期的)工作都是高度确定的(highly deterministic),random havoc和test case splicing只在后期的部分进行。 确定性的策略包括: 1.bitflip,位反转 即按位进行翻转,0变1,1变0。 根据翻转量/步长,按位翻转的策略有以下几种 bitflip 1/1,每

Proj. THUDFuzzVis: VisFuzz: Understanding and Intervening Fuzzing with Interactive Visualization

Source code: https://github.com/ChijinZ/VisFuzz Abstract 传统上模糊测试的一个瓶颈在于很难覆盖到被复杂的条件-比如magic number, 嵌套的条件所引导的程序支线,为此人们提出了白盒测试,然而即使这样,对复杂的条件的支持还是不够,比如array sort,virtual function, tree set queri

【AFL(十四)】afl-plot 使用详解

afl-plot是一个很实用的工具,可以看到很多论文会用到一些统计的图,一开始我以为是他们有统一的标准画出来的,后来才知道是afl-plot这个工具弄出来的,目前还没有对细节进行研究,其实这个工具可以根据自己的需求进行修改,跟afl-whatsup很像,在论文中可以为自己的数据做服务。 对afl-plot进

论文复现(知识点总结)

MOpt: Optimized Mutation Scheduling for Fuzzers 一.论文介绍及研究背景 1.1论文信息 论文题目:MOpt: Optimized Mutation Scheduling for Fuzzers 作者:Chenyang Lyu, Zhejiang University; Shouling Ji, Zhejiang University & Alibaba-Zhejiang University Joint Research Insti

【AFL(七)】afl-fuzz.c小改——输出文件夹暂存

前言: 之前已经写过两篇针对tmin、cmin的修改,现在再改afl-fuzz.c已经轻车熟路了,对整个afl的源码结构也比较了解了。 afl-tmin:https://www.cnblogs.com/wayne-tao/p/11964565.html afl-cmin:https://www.cnblogs.com/wayne-tao/p/11971922.html 此番修改是因为,对AFL关于 out_dir 文件