AFL fuzz工具初探
AFL fuzz工具初探
下载 && 安装代码语言:javascript代码运行次数:0运行复制wget .tgz
tar -xvf ./afl-latest.tgz
cd afl-2.52b/
sudo make && sudo make install安装成功代码语言:javascript代码运行次数:0运行复制root@giant:~# afl-fuzz
a
AFL fuzz工具初探
下载 && 安装
代码语言:javascript代码运行次数:0运行复制wget .tgz
tar -xvf ./
cd afl-2.52b/
sudo make && sudo make install
安装成功
代码语言:javascript代码运行次数:0运行复制root@giant:~# afl-fuzz
afl-fuzz 2.52b by <lcamtuf@google>
afl-fuzz [ opti ] -- /path/to/fuzzed_app [ ... ]
Required parameters:
-i dir - input directory with test cases
-o dir - output directory for fuzzer findings
Execution control settings:
-f file - location read by the fuzzed program (stdin)
-t msec - timeout for each run (auto-scaled, 50-1000 ms)
-m megs - memory limit for child process (50 MB)
-Q - use binary-only instrumentation (QEMU mode)
Fuzzing behavior settings:
-d - quick & dirty mode (skips deterministic steps)
-n - fuzz without instrumentation (dumb mode)
-x dir - optional fuzzer dictionary (see README)
Other stuff:
-T text - text banner to show on the screen
-M / -S id - distributed mode (see parallel_)
-C - crash exploration mode (the peruvian rabbit thing)
For additional tips, please cult /usr/local/share/doc/afl/README.
有源码fuzz——upx
由于我们用afl来fuzz,这个有源码的要用afl-gcc来编译,所以编辑Makefile文件
代码语言:javascript代码运行次数:0运行复制git clone .git
cd upx/
vim Makefile
添加:CC = /usr/local/bin/afl-gcc (我直接在第一行加)
代码语言:javascript代码运行次数:0运行复制cd ./src
vim Makefile
修改: CXX ?= /usr/local/bin/afl-g++ (应该在1行)
此外,我们还需要安装编译依赖的东西,github文档有说:.SRC
那个zlib一般都会有的,很多linux其实默认自带upx了
如果没有的话,ubuntu是这个
代码语言:javascript代码运行次数:0运行复制apt install zlib1g zlib1g-dev
安装lzma-sdk
代码语言:javascript代码运行次数:0运行复制root@giant:~/aflfuzz/fuzztarget/upx# git submodule update --init --recursive
Submodule 'src/lzma-sdk' (.git) registered for path 'src/lzma-sdk'
Cloning into 'src/lzma-sdk'...
remote: Counting objects: 49, done.
remote: Total 49 (delta 0), reused 0 (delta 0), pack-reused 49
Receiving objects: 100% (49/49), 4.46 KiB | 0 bytes/s, done.
Resolving deltas: 100% (151/151), done.
Checking connectivity... done.
Submodule path 'src/lzma-sdk': checked out '426fe82d122e2cf140a86751055ee5278fe2ef'
安装ucl
代码语言:javascript代码运行次数:0运行复制wget .gz
tar -xvf ./ucl-1.gz
cd ucl-1.0/
./configure && sudo make && sudo make install
export UPX_UCLDIR=/path/to/ucl-1.0 # !!!!!你自己的路径啊
最后到我们编译upx了
代码语言:javascript代码运行次数:0运行复制root@giant:~/aflfuzz/fuzztarget/upx# make all
最后编译生成的文件在src目录下的
我们用ida打开就可以看到不同了
开始fuzz(下面用file文件作为样本)
代码语言:javascript代码运行次数:0运行复制root@giant:~/aflfuzz/fuzztarget/upx# mkdir afl_in afl_out
root@giant:~/aflfuzz/fuzztarget/upx# cp /usr/bin/file afl_in
root@giant:~/aflfuzz/fuzztarget/upx# afl-fuzz -i afl_in -o afl_out ./src/ @@
对了,还需要开启core dump
代码语言:javascript代码运行次数:0运行复制echo core >/proc/sys/kernel/core_pattern
刚开跑就15个崩溃了
无源码fuzz
对无源码的程序进行fuzz一般有两种方法:
- 对二进制文件进行插桩
- 使用-n选项进行传统的fuzz测试
第一种由afl-qemu实现,如果使用第二种方法,把-Q改成-n就行
编译一个AFL版的qemu
代码语言:javascript代码运行次数:0运行复制root@giant:~/aflfuzz/afl-2.52b# cd qemu_mode/
root@giant:~/aflfuzz/afl-2.52b/qemu_mode# ls
build_qemu_support.sh patches README.qemu
root@giant:~/aflfuzz/afl-2.52b/qemu_mode# ./build_qemu_support.sh
root@giant:~/aflfuzz/afl-2.52b/qemu_mode#cp ../afl-qemu-trace /usr/local/bin/
如果缺少libtool
代码语言:javascript代码运行次数:0运行复制apt install libtool-bin
无源码fuzz —— readelf
同样也是创建文件夹,放入原始样本(test你自己准备吧)
代码语言:javascript代码运行次数:0运行复制mkdir afl_in afl_out
mv test ./afl_in/
cp /usr/bin/readelf .
afl-fuzz -i afl_in -o afl_out -Q ./readelf -a @@
reference
/2017/09/21/AFL%E6%8A%80%E6%9C%AF%E4%BB%8B%E7%BB%8D/ .html
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2018-05-06,如有侵权请联系 cloudcommunity@tencent 删除root编译工具源码qemu#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-24 14:19:22
推荐阅读
留言与评论(共有 11 条评论) |
本站网友 长沙万国城moma | 24分钟前 发表 |
100% (151/151) | |
本站网友 紧身裤显凹凸 | 4分钟前 发表 |
100% (49/49) | |
本站网友 忘了你存在 | 30分钟前 发表 |
-T text - text banner to show on the screen -M / -S id - distributed mode (see parallel_) -C - crash exploration mode (the peruvian rabbit thing) For additional tips | |
本站网友 石狮市财政局 | 3分钟前 发表 |
100% (49/49) | |
本站网友 华润置地沈阳 | 0秒前 发表 |
pack-reused 49 Receiving objects | |
本站网友 垃圾处理厂 | 10分钟前 发表 |
~/aflfuzz/fuzztarget/upx# afl-fuzz -i afl_in -o afl_out ./src/ @@对了 | |
本站网友 财经搜索 | 12分钟前 发表 |
100% (49/49) | |
本站网友 重庆邮电大学bbs | 0秒前 发表 |
-T text - text banner to show on the screen -M / -S id - distributed mode (see parallel_) -C - crash exploration mode (the peruvian rabbit thing) For additional tips | |
本站网友 宁波吧 | 19分钟前 发表 |
done. Checking connectivity... done. Submodule path 'src/lzma-sdk' | |
本站网友 脉康合剂 | 13分钟前 发表 |
~/aflfuzz/afl-2.52b/qemu_mode# ls build_qemu_support.sh patches README.qemu root@giant |