Fuzzing101:Exercise 5 - LibXML2 翻译+解题

Fuzzing101:Exercise  5 - LibXML2 翻译+解题

题目链接:https://github.com/antonio-morales/Fuzzing101/tree/main/Exercise%205

在本次练习中,我们将对LibXML2 XML 解析库进行模糊测试。目标是在 LibXML2 2.9.4 中找到CVE-2017-9048的崩溃/PoC 。

你将学到什么:

完成本练习后,您将了解如何:

  • 使用自定义字典(或现有字典)帮助模糊器找到新的执行路径
  • 多核并行模糊测试工作

有关字典的知识,可以去看我的这篇文章:AFL的字典

下载并构建目标:

让我们首先得到我们的fuzzing目标。为您想要fuzzing的项目创建一个新的目录

cd $HOME
mkdir Fuzzing_libxml2 && cd Fuzzing_libxml2

下载并解压libxml2 - 2.9.4.tar.gz

wget http://xmlsoft.org/download/libxml2-2.9.4.tar.gz
tar xvf libxml2-2.9.4.tar.gz && cd libxml2-2.9.4/

构建并安装libxml2:

sudo apt-get install python-dev
CC=afl-clang-lto CXX=afl-clang-lto++ CFLAGS="-fsanitize=address" CXXFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address" ./configure --prefix="$HOME/Fuzzing_libxml2/libxml2-2.9.4/install" --disable-shared --without-debug --without-ftp --without-http --without-legacy --without-python LIBS='-ldl'
make -j$(nproc)
make install

种子语料库的构建

首先,我们需要获取一些 XML 样本。我们将使用此存储库中提供的SampleInput.xml

mkdir afl_in && cd afl_in
wget https://raw.githubusercontent.com/antonio-morales/Fuzzing101/main/Exercise%205/SampleInput.xml
cd ..

自定义字典

现在,需要创建一个XML字典。或者,使用AFL++提供的字典(这里我们使用的就是AFL++提供的字典):

mkdir dictionaries && cd dictionaries
wget https://raw.githubusercontent.com/AFLplusplus/AFLplusplus/stable/dictionaries/xml.dict
cd ..

模糊测试:

官方教程使用了多核并行模糊测试:

afl-fuzz -m none -i ./afl_in -o afl_out -s 123 -x ./dictionaries/xml.dict -D -M master -- ./xmllint --memory --noenc --nocdata --dtdattr --loaddtd --valid --xinclude @@
afl-fuzz -m none -i ./afl_in -o afl_out -s 234 -S slave1 -- ./xmllint --memory --noenc --nocdata --dtdattr --loaddtd --valid --xinclude @@

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值