Fuzzing101:Exercise 3 - tcpdump 翻译+解题

这篇具有很好参考价值的文章主要介绍了Fuzzing101:Exercise 3 - tcpdump 翻译+解题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Fuzzing101:Exercise 3 - tcpdump 翻译+解题

题目部分翻译

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

 在本练习中,我们将对TCPdump数据包分析器进行模糊测试。目标是在 TCPdump 4.9.2 中找到CVE-2017-13028的崩溃/PoC 。如果想要了解更多CVE-2017-13028,可以通过以下的链接找到有关越界读取漏洞的更多信息:https: //cwe.mitre.org/data/definitions/125.html

你将学到什么:

完成此练习后,您将了解:

  • 什么是ASan(Address Sanitizer),一个运行时内存错误检测工具
  • 如何使用 ASAN 模糊目标
  • 使用 ASan 对崩溃进行分类有多容易
环境:

所有的练习都在Ubuntu 20.04.2 LTS上进行了测试。强烈建议您使用相同的操作系统版本,以避免不同的模糊结果。

下载并构建目标:

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

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.0libpcap-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

结果如图所示:

Fuzzing101:Exercise 3 - tcpdump 翻译+解题,Fuzzing101,tcpdump,测试工具,网络

在继续执行以下步骤之前,请检查版本号是否与上面的数字匹配

种子语料库创建

可以在“./tests”文件夹中找到很多.pcacp示例。您可以使用以下命令行运行这些 .pcap 文件:

$HOME/fuzzing_tcpdump/install/sbin/tcpdump -vvvvXX -ee -nn -r [.pcap file]

例如:

$HOME/fuzzing_tcpdump/install/sbin/tcpdump -vvvvXX -ee -nn -r ./tests/geneve.pcap

结果如图所示:

Fuzzing101:Exercise 3 - tcpdump 翻译+解题,Fuzzing101,tcpdump,测试工具,网络

AddressSanitizer

AddressSanitizer (ASan)是用于 C 和 C++ 的快速内存错误检测器。它最初由 Google开发,并于 2011 年 5 月首次发布。

它由编译器检测模块和运行时库组成。该工具能够查找对堆、堆栈和全局对象的越界访问,以及释放后使用、双重释放和内存泄漏错误。

AddressSanitizer 是开源的,从 3.1 版本开始与 LLVM 编译器工具链集成。虽然它最初是作为 LLVM 的项目开发的,但它已被移植到 GCC 并包含在 >= 4.8 的 GCC 版本中

您可以通过以下链接找到有关 AddressSanitizer 的更多信息。

启用 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

现在,在调用configure和make前设置AFL_USE_ASAN=1:

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

模糊测试Fuzzing

执行以下命令:

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 @@

一段时间后,您应该会遇到多次崩溃:

Fuzzing101:Exercise 3 - tcpdump 翻译+解题,Fuzzing101,tcpdump,测试工具,网络

Triage 

调试使用 ASan 构建的程序比之前的练习要容易得多。您需要做的就是向程序提供崩溃文件:

$HOME/fuzzing_tcpdump/install/sbin/tcpdump -vvvvXX -ee -nn -r '/home/antonio/fuzzing_tcpdump/out/default/crashes/id:000000,sig:06,src:002318+001583,time:10357087,op:splice,rep:8'

您将获得崩溃的详细摘要,包括执行跟踪:

Fuzzing101:Exercise 3 - tcpdump 翻译+解题,Fuzzing101,tcpdump,测试工具,网络文章来源地址https://www.toymoban.com/news/detail-799203.html

到了这里,关于Fuzzing101:Exercise 3 - tcpdump 翻译+解题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 接口测试工具——Postman测试工具 & Swagger接口测试+SpringBoot整合 & JMeter高并发测试工具

    头部携带token 类型选择JSON https://apifox.com/ swagger2,较多 swagger3, Knife4j的前身是swagger-bootstrap=ui,前身swagger–bootstrap-ui是一个纯swagger–ui的ui皮肤项目 https://doc.xiaominfo.com/docs/quick-start 底层就是swagger 序号 注解 作用 1 @Api(tags = “图书的api接口类”) 左侧名字 2 @ApiOperation(“findPa

    2024年02月12日
    浏览(59)
  • 接口测试流程、测试点和测试工具

    目录 前言: 一、什么情况下开展接口测试? 二、如何进行接口测试

    2024年02月11日
    浏览(57)
  • 功能测试(八)—— APP之专项测试、性能测试、性能测试工具SoloPi

    目录 APP测试要点 目标 一、APP专项测试 1.1 兼容性 1.2 安装 1.3 卸载 1.4 升级 1.5 干扰测试(交叉事件测试) 1.6 Push推送 1.7 用户体验 二、 性能测试工具 2.1 APP性能测试工具介绍 —— SoloPi简介 2.2 APP性能测试工具 —— SoloPi使用 三、APP性能测试 3.1 CPU 3.2 内存 3.3 流量 3.4 电

    2024年02月03日
    浏览(54)
  • 【测试工具】UnixBench 测试

    UnixBench 原本叫做 BYTE UNIX benchmark suite。软件为 Unix 类的系统提供了一些基本的性能指标。通过不同的测试来测试系统不同方面的性能(2D,3D,CPU,内存等等)。这些测试的结果将和一些标准的系统来做比较,从而得出一些性能指数,比原始 的测试数据容容易理解。 UnixBench一

    2024年01月16日
    浏览(42)
  • RustDay06------Exercise[81-90]

    81.宏函数里面的不同的匹配规则需要使用分号隔开 82.使用内部封装好的宏来替代某些常数 83.if let回顾 84.按照提示修改 这题说明 resize是原地操作 没有返回值 交换值必须要借助中间变量 85.使用as强制转换类型 86.大佬的奇特匹配orz 这题看了大佬的写法,太beautiful了(只有9行) 下

    2024年02月07日
    浏览(37)
  • RustDay04------Exercise[21-30]

    21.使用()对变量进行解包 22.元组的下标引用 使用.index来进行下标索引,注意数组依旧采取[index]的方式来进行下标索引 23.使用Vec!来创建数组 注意是小写的vec! 24.Vec和map的遍历迭代 25.可变借用 开始vec1没有生命mut 所以push会报错 ,加上mut申明即可 26.不能修改传入给函数的参数,但

    2024年02月07日
    浏览(26)
  • 前端性能测试必备测试工具

    我们在使用网站过程中,经常会遇到慢的问题,为了找到原因,一般需要借助工具进行检测,通过工具,可以检测出前端站点加载资源的相关详细情况。 今天,就给大家介绍几款前端性能测试分析工具,结合性能测试工具,实现通过量化的方式测试网站中诸如首字节加载时间

    2024年02月05日
    浏览(51)
  • 测试外包服务 | 从人员外包到测试工具、测试平台,提供全方位的测试解决方案

    随着学社的学员越来越多,影响力越来越大,不停有学员和企业问我们:能否提供人员外包服务?与此同时,企业对于外包人员的业务技能要求也越来越高,寻找一个稳定靠谱的供应商也成了很多学员所在公司的需求。对此,学社推出了专业的外包解决方案,有这方面的需求

    2024年04月16日
    浏览(44)
  • 【测试开发】第五节.测试——自动化测试(Selenium工具)

    作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:Java测试开发 每日一句: 人的一生,可以有所作为的时机只有一次,那就是现在!!! 前言 一、自动化测试的概念以及分类 二、Selenium—web自动化测试工具 2.1 自动化测试的一些前置工作 2.2 第一个自动化实例

    2024年02月04日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包