对fuzzing101这个项目的简记
exercise3
cd $HOME
mkdir fuzzing_tcpdump && cd fuzzing_tcpdump/
# 下载并解压 tcpdump-4.9.2.tar.gz
wget https://github.com/the-tcpdump-group/tcpdump/archive/refs/tags/tcpdump-4.9.2.tar.gz
tar -xzvf tcpdump-4.9.2.tar.gz
# 我们还需要下载 TCPdump 需要的跨平台库 libpcap。下载并解压 libpcap-1.8.0.tar.gz:
wget https://github.com/the-tcpdump-group/libpcap/archive/refs/tags/libpcap-1.8.0.tar.gz
tar -xzvf libpcap-1.8.0.tar.gz
# 我们需要重命名libpcap-libpcap-1.8.0为libpcap-1.8.0. 否则,tcpdump 找不到libpcap.a本地路径: (实操下来好像没啥用,我最终显示的版本不是这个,有可能是因为我之前的环境残留问题)
mv libpcap-libpcap-1.8.0/ libpcap-1.8.0
# 构建并安装 libpcap:
cd $HOME/fuzzing_tcpdump/libpcap-1.8.0/
./configure --enable-shared=no
make
# 现在,我们可以构建和安装 tcpdump:
cd $HOME/fuzzing_tcpdump/tcpdump-tcpdump-4.9.2/
./configure --prefix="$HOME/fuzzing_tcpdump/install/"
make
make install
# 要测试一切是否正常,只需键入:
$HOME/fuzzing_tcpdump/install/sbin/tcpdump -h
这个存在一些问题,就是我没用afl++重新编译之前,版本都是最新版,不知道存在啥问题
运行实例
$HOME/fuzzing_tcpdump/install/sbin/tcpdump -vvvvXX -ee -nn -r ./tests/geneve.pcap
在启用 ASan 的情况下构建
现在我们将构建启用 ASAN 的 tcpdump(和 libpcap)。
首先,我们要清理所有之前编译的目标文件和可执行文件:
rm -r $HOME/fuzzing_tcpdump/install
cd $HOME/fuzzing_tcpdump/libpcap-1.8.0/
make clean
cd $HOME/fuzzing_tcpdump/tcpdump-tcpdump-4.9.2/
make clean
现在,我们AFL_USE_ASAN=1
在调用configure
and之前设置make
:
cd $HOME/fuzzing_tcpdump/libpcap-1.8.0/
export LLVM_CONFIG="llvm-config-11"
CC=afl-clang-lto ./configure --enable-shared=no --prefix="$HOME/fuzzing_tcpdump/install/"
AFL_USE_ASAN=1 make
cd $HOME/fuzzing_tcpdump/tcpdump-tcpdump-4.9.2/
AFL_USE_ASAN=1 CC=afl-clang-lto ./configure --prefix="$HOME/fuzzing_tcpdump/install/"
AFL_USE_ASAN=1 make
AFL_USE_ASAN=1 make install
afl-clang-lto 编译可能需要几分钟才能完成
fuzz
现在,您可以使用以下命令运行模糊器:
afl-fuzz -m none -i $HOME/fuzzing_tcpdump/tcpdump-tcpdump-4.9.2/tests/ -o $HOME/fuzzing_tcpdump/out/ -s 123 -- $HOME/fuzzing_tcpdump/install/sbin/tcpdump -vvvvXX -ee -nn -r @@
意料之外的事发生事,我这里没有crash,十分的尴尬
I'm so cute. Please give me money.
- 記事へのリンク:https://torebtr.github.io/2022/09/11/fuzzing101/
- 著作権表示:このブログ内のすべての記事は、特別な記載がない限り の下のライセンスで保護されています。
GitHub IssuesGitHub Discussions