AFL源码分析05:fuzz_one
前言本篇作为AFL源码分析的最后一篇,完成了对fuzz执行过程中的核心函数fuzz_one及其辅助函数(均位于文件afl-fuzz.c中,上一篇分析的主要是该文件中的fuzz初始化部分)的分析。在完整跟完一遍AFL源码后,不禁感叹于作者在代码设计上的巧妙以及将遗传算法应用在fuzz领域的绝佳构思。相 ...
AFL源码分析04:afl-fuzz.c
前言本篇是对afl-fuzz.c中初始化部分的函数进行分析,由于源码过于庞大,部分较为简单的函数或者内容冗余的函数就不详细分析了,将只会摘取出部分源码进行解析。
afl-fuzz.c源码分析(初始配置)关键变量c12345678910111213141516171819202122232425262 ...
AFL源码分析03:afl-as.h
前言本篇是(普通)插桩的最后一部分,主要是分析afl-as.h中关于桩代码的实现过程,文中涉及到大量汇编,需要一定的汇编语言基础才能看懂。此外,由于本人不喜AT&T格式的汇编,因此在分析时,选择用gdb查看经过afl-gcc编译后的程序,并以Intel汇编格式的桩代码进行分析。
前置知识系统调用/库 ...
AFL源码分析02:afl-as.c
前言前一篇分析了afl-gcc,它相当于gcc的一个wrapper,最后会调用实际的gcc,并编辑参数指定汇编器afl-as;本篇则分析(普通)插桩过程中的另一个wrapper:afl-as,他是对GNU as的一个wrapper,会编辑好参数并插桩后,调用实际的as进行汇编操作。
afl-as.c ...
AFL源码分析01:afl-gcc.c
前言阅读AFL源码是深入理解Fuzz的第一步,也是为日后对AFL进行魔改或打造自己的Fuzz工具打下基础,本篇从插桩编译开始,一步步了解AFL进行Fuzz的完整流程。
afl-gcc.c源码分析概述
AFL(普通)插桩部分源码主要有3个:afl-gcc.c、afl-as.h、afl-as.c
本质上 ...
AFL环境搭建
前言本篇博客以此文的内容为基础进行扩展延申,并记录了用Qemu模式Fuzz时的踩坑过程及解决方案。
AFL简介
概述:AFL(American Fuzzy Lop)是一款开源的Fuzzing测试工具,由Google安全工程师MIchal Zalewski开发
Fuzz模式:
有源码模式:通过对源 ...
缓冲区溢出入门(下)
前言堆溢出相对前两种缓冲区溢出方式更为复杂一些,因此这里单独开一篇对堆溢出进行简单介绍。
堆的生命周期为了方便理解,这里先不讲堆的利用方式,而是先过一遍堆的分配与释放的流程。然后根据内存中堆的变化情况,在去查看源码去了解堆的结构,寻找堆的利用方式,再进行堆的利用。
首先,这里还是选择Protosta ...
缓冲区溢出入门(上)
前言在老大的推荐下,最近一段时间一直在学习 LiveOverflow 这个频道上的内容,基础篇主要通过Prostar Exploit Education上的练习介绍了常见的缓冲区溢出的利用手法,这里做个小结记录一下。
栈溢出原理利用具有漏洞的函数(例如一些不检查输入字符串大小的函数,常见的像gets ...
初探GOT与PLT
前言之前看了个讲GOT和PLT的视频。看明白了,但没完全明白。所以,就把看明白的那部分,先整理成笔记写下来。以后全看明白了,再补充。
基础知识
.got(位于数据段)
GOT(Global Offset Table)全局偏移表。这是「链接器」为「外部符号」填充的实际偏移表。这里的外部符号当然也包含全 ...
KCTF题库:异想天开
前言原本想着,在博客记录下做的每一道CTF题,懒癌,一直没有行动;但这题就不一样了,自认为还是有一定难度的,有一定启发性的,所以得抓紧记录下来,不然就忘记思路了。这题最初是上周五(2021.10.15)做的,当时没做出来,回家后又和萌萌哒研究了1小时,还是没头绪(这里有个插曲,萌萌哒发现很多时候我不 ...