【fuzz】AFL源码分析 part 2
上个一个part主要关注的是插桩相关部分的源码,这一节主要来查看afl-fuzz.c这个核心模块的源码部分 概述由于该部分代码体量过大,我们只对核心部分进行源码解析。这部分总体可以分为三块: 初始配置:进行fuzz环境配置相关工作 fuzz执行:fuzz的主循环过程 变异策略:测试用例的变异过程和方式 预处理首先从main()函数着手进行分析。在完成初始配置后,main()同样利用time生成随机种子 gettimeofday(&tv, &tz); s ...
【fuzz】AFL源码分析 part 1
本来想一周内完成,看来要延期了,尽量希望能在这几天内完成吧,31号晚上还有qax的一面😭😭,水平果然还是太次了。 项目地址:google/AFL(github.com) 前言AFL,全称“American Fuzzy Lop”,是由安全研究员Michal Zalewski开发的一款基于覆盖引导(Coverage-guided)的模糊测试工具,它通过记录输入样本的代码覆盖率(代码执行路径的覆盖情况),以此进行反馈,对输入样本进行调整以提高覆盖率,从而提升发现漏 ...
【fuzz】ASAN原理解析
前言 参考文章: 工欲善其事必先利其器——AddressSanitizer - 知乎 (zhihu.com) google/sanitizers(github.com) 本所涉及到的相关代码可以在我的仓库内找到:how2ASAN/README.md at main · Loora1N/how2ASAN (github.com) ASAN简介ASAN(Address Sanitizer)是针对 C/C++ 的快速内存错误检测工具,在 ...
【fuzz】AFL白皮书中英双语版
前言 最近想研究研究AFL整体内部逻辑源码,面试时也遇到了同样的问题,决定从AFL白皮书开始看看。网上有很多翻译版,但是要不就是没写完,要不就是机翻痕迹太重。决定自己完成这个任务,争取在一周内完成大部分核心源码的分析。又想到之前看网络协议栈和IO_FILE时的噩梦了😭😭😭 本人英语水平有限,如有问题可以文末评论区直接指出。我想做中英双语版也是尽量在一定程度上防止大家被我的蹩脚翻译带偏。 白皮书的原文部分我都会使用markdown的引用语法,另外,全文使用AFL简写替代 ...
【fuzz trick】利用LCOV测量代码覆盖率
本文样例为LibTIFF version 4.0.4,以CVE-2016-9297漏洞举例 Install直接使用apt安装包即可 sudo apt install lcov Usage整体流程大致如下 cd ./tiff-4.0.4/ lcov --zerocounters --directory ./ lcov --capture --initial --directory ./ --output-file app.info ../install/bin/tiff ...
【IOT】嵌入式设备固件分析
嵌入式设备固件一般可以分为两类: 有文件系统(如路由器固件这种) 无文件系统(如STM32这种嵌入式设备固件,程序直接存放在flash中) 针对第一类固件,分析起来比较简单,直接binwalk分离。然后去逆向对应的服务对应的二进制程序即可,也不需要考虑程序的加载地址。 而对于第二类固件,往往就会比较复杂,需要分析程序的加载地址,也需要考虑外设的地址映射。 本文将从SCTF2020的题目Password Lock入手,分析STM32固件作为入门 题目信息这是一个STM3 ...
某市电网漏洞挖掘小记
由于电网设施保护非常严格,整个网络拓扑也异常复杂,说实话前两天一直在梳理整个体系架构(后来发现完全没必要)。整整4天,找到两个栈溢出,但都没法利用,只好按DOS交了。据我了解,从外网进入内部网络的可能性几乎没有,实际漏挖也是需要线下网线接入交换机。 说实话我也不知道这种内网漏洞的意义是什么,感觉像是审潜在代码BUG 接入设备首先就是接入交换机然后ssh上服务器,不过接入的时候是不能开启wifi,不能连接其他网络,不然监管系统会一直报警👮👮👮 ssh上去之后的第一件 ...
【WP】AntCTFxD3^CTF d3op
本文采取根据官方wp的方式进行复现,需要官方WP的pdf文件也可以在评论区留言(侵删) 文件系统分析首先解压文件系统 mkdir rootfs cd rootfs unsquashfs ../unsquashfs ../squashfs-root.img 在etc/os-release中我们能看到版本信息 NAME="OpenWrt" VERSION="22.03.3" ID="openwrt" ID_LI ...
网络协议栈CH4及CH6
题外话 去年11月份做IO相关源码的时候就已经觉得有些宏定义纯纯恶心,没想到今日的网络协议栈再一次体会了这种感觉😅,感谢网络协议栈让我重温旧日的美好时光。 第四章 接口:以太网以太网接口 IP分组的以太网帧如上图所示,包含6字节的目的和源地址,2字节的类型,末尾4字节的CRC。前14个字节我们在上一篇文章讨论输入输出时已经见过。对于IP分组,其类型是固定的0x0800(十进制2048) leintr函数 感觉记住这几个函数干什么就行,也没啥特别说的。一个个源码都挺长的,放 ...
网络协议栈CH8及CH23
昨晚搞到快两点,今天9.30才起床,希望11点半之前能搞完去吃饭😭 第八章 IP:网际协议IP分组 参照上图,有几个基本概念(本例中的传输层协议为UDP): 报文:由传输层送至IP的数据报,本身包含传输层首部和数据 数据报:IP在报文的前面加上自己的IP首部,且根据长度考虑是否分片(上图1-2行) 帧:IP将分好片的数据报交给数据链路层,数据链路填上自己的首部后变为帧(上图3行) 分组:一个分片的数据报或者一个不需分片的数据报为分组 需注意的是IP数据报结构存储 ...