- 博客(81)
- 资源 (2)
- 收藏
- 关注
原创 【黑盒模糊测试】路由器固件漏洞挖掘实战--AFL++ qemu_mode
在实际工作中,例如物联网、车联网固件文件系统中已经编译好的应用二进制程序来讲,我们关注的重点往往是厂商自己开发的应用程序是否会存在漏洞,这个时候就出现了无源码的binary-only(黑盒测试)情况
2023-02-22 18:14:47
3368
2
原创 【工具篇】Firmwalker车联网安全实用小工具介绍
Firmwalker是一个纯shell语言编写的脚本工具项目,主要适用于物联网中固件文件系统检索扫描工作。可以在在实际物联网、车联网渗透测试过程中,firmwalker主要在前期信息搜集阶段进行使用。根据在文件系统中进行关键字检索,获取可能具有价值的敏感数据或文件。
2023-02-15 18:45:22
2744
1
原创 【二进制安全面试题】linux篇:保护机制、函数调用约定
私下有好多朋友问我毕业工作的事情,毕竟搞二进制最重要的是要有热情!我能做的也是有限,每个人的学习方式不完全相同,所以想开一个面试题解析的专题。本专题的初衷并不是为了应试面试,而是根据面试题差缺不漏,看看自身有哪些知识点还没有掌握~
2023-01-09 19:19:24
2129
1
原创 【Custom Mutator Fuzz】Libprotobuf + AFLapp Custom Mutator Input
本篇文章主要讲述数据如何在传递给AFL++之前,通过后处理的方式进行自定义突变。本篇也是【custom mutator】系列的最后一篇文章,祝愿正在看这篇文章的你能够早日得到自己的原创漏洞~
2022-06-07 10:30:00
978
2
原创 【Custom Mutator Fuzz】Libprotobuf + AFLapp Custom Mutator
这篇文章主要是在libprotobuf-mutator_fuzzing_learning开源模糊测试练习项目第4个练习的基础上进行详细讲解,主要内容为通过libprotobuf-mutator为AFL++提供自定义protobuf结构突变。练习和写作的过程中也是踩了不少的坑,文章末尾会有我遇到的全部问题及解决办法
2022-05-22 14:26:30
787
原创 【Custom Mutator Fuzz】AFL++自定义突变API
前言其实这篇是临时加进来的,因为下一篇文章是libprotobuf + AFL++的内容,所以写的时候需要使用AFL++自定义突变的API,觉得还是需要单独写一篇API的介绍,一共十一个方法,也不是很多,下一篇文章就不再用大篇幅描述API了~编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノPS:文章末尾有联系方式,交个朋友吧~本文链接:模糊测试系列往期回顾:【Custom Mutator Fuzz】Libprotobuf + LibFuzzer Custom M.
2022-05-19 18:36:16
974
5
原创 【Custom Mutator Fuzz】Libprotobuf + LibFuzzer Custom Mutator
这篇文章主要讲的是在Libprotobuf-mutator与LibFuzzer联合使用的基础上,加上custom mutator功能。首先需要明确的是为什么要这么做,那么假设b字段只有为"FUZZ"或"PWN"两个字符的时候才能进入下一个程序分支的情况,当然LibFuzzer也可以在代码覆盖率的加持下进入下一个程序分支,但如果你通过逆向的方式已经知道了这个关键点,难道还需要等LibFuzzer跑出这两个字符串吗?
2022-05-16 13:22:29
887
3
原创 【Custom Mutator Fuzz】Libprotobuf + LibFuzzer联合使用
终于到了与fuzzer结合使用的章节了,本篇文章为Libprotobuf mutator fuzzing learning项目的第二个练习,其中有一些坑点,在本文中也进行了标注编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノPS:文章末尾有联系方式,交个朋友吧~本文链接:模糊测试系列往期回顾:【Custom Mutator Fuzz】简单Protobuf使用练习【Custom Mutator Fuzz】Protocol Buffer基础(下):C++生成代.
2022-05-12 00:06:07
820
3
原创 【Custom Mutator Fuzz】简单Protobuf使用练习
前面两篇文章中已经讲解了protobuf的结构以及生成代码的分析,这篇文章简单的介绍一下protobuf的使用。这里主要跟着libprotobuf-mutator_fuzzing_learning项目进行结构感知模糊测试练习
2022-05-10 16:14:52
789
原创 【Custom Mutator Fuzz】Protocol Buffer基础(下):C++生成代码介绍 + 配套代码
这篇文章主讲的是生成的C++文件如何进行调用。因为毕竟最后和fuzzer一起使用的还是生成的C++调用接口。因为上一篇文章讲解的是proto2的语法,所以本篇依然还是proto2生成代码讲解
2022-05-09 20:23:57
768
原创 【Custom Mutator Fuzz】Protocol Buffer基础(上):proto2编写格式
Protocol Buffer简称PB,是Google的一种独立的数据交换格式,独立于语言,独立于平台,所以PB的适配性非常好。在模糊测试专栏中PB可以算得上是一个前置的知识,通过它来配合fuzzer进行结构感知模糊测试。这篇主要理解proto2版本编写格式~
2022-05-08 16:13:00
829
原创 【Custom Mutator Fuzz】libprotobuf-mutator安装
在之前的文章中,主要使用AFL、AFL++和libfuzzer此类fuzzer进行模糊测试实验,结构化输入的时候依靠字节的变异可能会破坏输入数据整体的结构,那么就需要使用protobuf协助构建结构化输入
2022-04-12 08:58:45
2051
原创 LibFuzzer学习(三):使用小trick
LibFuzzer使用最后一篇,主讲交叉检查、解决竞争问题、最小化语料库、最小化reproducer。文章结尾有联系方式,交个朋友吧~
2022-03-26 16:43:55
981
2
原创 LibFuzzer学习(二):提高代码覆盖率和速度
前一篇文章中展示了libfuzzer的基本用法,在实际的模糊测试过程中,仅仅使用基础的用法会消耗非常多的时间,也会因为代码覆盖率不足的原因导致找不到想要的漏洞。这就需要通过一些技巧来提升代码覆盖率和速度
2022-03-22 17:32:46
1992
原创 LibFuzzer学习(一):轻松找到心脏出血漏洞
第一次尝试使用LibFuzzer进行模糊测试,感觉上手没有那么困难。文章在demo部分展示基本使用方法,后半部分实践复现心脏出血漏洞~
2022-03-16 16:48:04
1990
1
原创 Fuzz出结果不会看?Address Sanitizer(ASan)各类溢出demo分析
fuzz出结果不会看?漫长的等待迎来了crash但是不知道该如何分析?看看这篇ASan溢出demo分析,fuzz后研究思路更加清楚~
2022-02-23 17:39:26
2050
原创 Fuzzing101 Exercise 5 - LibXML2 学习笔记
本篇文章主要记录Fuzzing 101 Exercise 5 - LibXML2的学习过程,本次练习展示如下知识点:使用字典进行目无测试、多核并行化模糊测试工作编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ
2022-01-12 12:23:39
1173
7
原创 Fuzzing101 Exercise 4 - LibTIFF 学习笔记
本篇文章主要记录Fuzzing101 Exercise 4 - LibTIFF的学习过程,本次练习展示如下知识点:什么事代码覆盖率,如何使用LCOV测量fuzz结果代码覆盖率,编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ
2022-01-10 11:46:35
1012
原创 Fuzzing101 Exercise 3 - TCPdump 学习笔记
本篇文章主要记录Fuzzing101 Exercise 3 - TCPdump的学习过程,本次练习展示如下知识点:什么是ASAN(Address Sanitizer)、如何使用ASAN对目标进行模糊测试、ASAN对崩溃分类展示情况(~~后续可能单独出一章~~) 编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ
2022-01-06 14:24:11
1420
原创 Fuzzing101 Exercise 2 - Libexif 学习笔记
本篇文章主要记录Fuzzing101 Exercise2 - Libexif的学习过程,本次练习会展示如下知识点:AFLplusplus的安装与使用、漏洞存在于外部库时如何进行模糊测试、使用eclipse进行调试验证编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ
2021-12-31 14:46:56
1601
1
原创 Fuzzing101 Exercise 1 - Xpdf学习笔记
本篇文章中主要记录Fuzzing101中Exercise 1的学习过程,关于文章中所用到的测试工具与测试目标,将会在后面的内容中展现。通过本文,将会将会学习到对目标应用程序进行插桩、AFL-FUZZ的使用、GDB验证fuzz结果。编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ
2021-12-23 16:41:56
2425
7
原创 AFL源码分析之afl-fuzz.c详细注释(二):FUZZ执行流程(五万字警告,慎入)
fuzz主流程一路跟下来见识到变异的巧妙,不禁感叹变异规则的强大,AFL源码注释章节系列到本文为止就结束了,内容一如既往地多,差不多有五万字左右。后续在第二阶段中会对fuzzing 101进行练习记录,如果感兴趣可以订阅模糊测试专栏~
2021-12-17 16:37:18
2268
4
原创 AFL源码分析之afl-fuzz.c详细注释(一):初始配置(6万字警告,慎入)
到了AFL中主要的执行部分afl-fuzz.c,8700行的代码注释起来属实有点长,所以会分几篇文章分段写。这篇文章主要注释的时初始化配置函数,其中对绝大部分代码做了注释。如果下定决心想要走一遍,建议一边调试一边阅读本文,如果只是对单个函数不是很清楚原理,可以点击函数列表中的锚点跳转至对应的函数代码~
2021-12-07 11:42:51
3507
8
原创 AFL源码分析之afl-as.c详细注释
前言afl-as注释好了,明白了是如何进行插桩的,以及插在哪里本文主要参考Sakura大佬文章:https://eternalsakura13.com/2020/08/23/afl/编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ/* Copyright 2013 Google LLC All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); y
2021-11-15 12:27:49
1618
4
原创 AFL源码分析之afl-gcc.c详细注释
前言很久之前就想拿出一块时间好好看看AFL,不过因为一些事情耽误了。最近学习了一下boofuzz在协议方面的模糊测试,通过sakura大佬的点拨觉得还是应该静下心好好看看AFL的源码,写出来就当是笔记了。本文主要参考初号机大佬博客,大佬连接及AFL源码下载地址如下:初号机大佬链接:https://bbs.pediy.com/thread-265936.htmAFL项目链接:https://github.com/google/AFL编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪
2021-11-11 15:52:07
3003
4
原创 how2heap(6):tcache_stashing_unlink_attack 2.31
tcache_stashing_unlink_attack主要利用的是small bin链表中摘堆块后重新排列进tcache的原理源码//gcc -g tcache_stashing_unlink_attack.c -o tcache_stashing_unlink_attack_231 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <assert.h> 4 5 int main()
2021-09-14 18:08:35
563
原创 how2heap(5):tcache_poisoning 2.31
tcache_poisoning 2.31依然还是将非堆段地址作为伪造堆块挂进tcache bin中,重新申请作为正常堆块启用源码 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <stdint.h> 4 #include <assert.h> 5 6 int main() 7 { 8 // disable buffering 9
2021-09-14 10:51:13
494
原创 how2heap(4):tcache_house_of_spirit 2.31
tcache_house_of_spirit 2.31比较简单,一句话概括就是释放一个不属于堆段的伪造堆块,然后重新申请源码 // gcc -g tcache_house_of_spirit.c -o tcache_house_of_spirit 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <assert.h> 4 5 int main() 6 { 7 s
2021-09-01 12:13:52
369
原创 how2heap(3):overlapping_chunks 2.31
overlapping_chunks 2.31源码 1 /* 2 3 A simple tale of overlapping chunk. 4 This technique is taken from 5 http://www.contextis.com/documents/120/Glibc_Adventures-The_Forgotten_Chunks.pdf 6 7 */ 8 9 #include <stdio.h> 10 #inclu
2021-08-31 17:15:08
418
原创 how2heap(2):fastbin_reverse_into_tcache 2.31
fastbin_reverse_into_tcache 2.27源码 # gcc -g fastbin_reverse_into_tcache.c -o fastbin_reverse_into_tcache 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <assert.h> 5 6 const size_t allocsiz
2021-08-25 10:52:42
577
原创 how2heap(1):fastbin_dup 2.31
fastbin_dup 2.27源码 # gcc -g fastbin_dup.c -o fastbin_dup 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <assert.h> 4 5 int main() 6 { 7 setbuf(stdout, NULL); 8 9 printf("This file demonstrates a
2021-08-25 10:39:18
842
4
原创 ARM PWN:Shanghai2018_baby_arm详细讲解
这是一道aarch64的PWN题目,依然觉得和x86没什么太大的区别,aarch64程序中也存在类似x86下csu_init的gadget。有区别的地方在于aarch64寄存器和汇编指令集,如果x86汇编指令集比较熟悉的话,找一篇关于aarch64的,看一看就很容易理解了
2021-07-06 21:57:46
1348
5
原创 ARM PWN:Codegate2018_Melong详细讲解
前言在上一篇文章中我们讲解了一道ARM32静态链接的题目,本篇文章讲解的是ARM32动态链接的题目:Codegate2018_Melong。其实本质并没有什么太大的区别,仅仅只是多了一个动态链接库而已,并不会有什么影响,基本的做题思路和以往的x86类题目保持一致往期回顾:通过一道ARM PWN题引发的思考:jarvisOJ_typoubuntu20.04 PWN(含x86、ARM、MIPS)环境搭建好好说话之House Of Einherjar(补题)HITCON 2018 PWN baby_
2021-07-04 22:16:33
861
7
原创 通过一道ARM PWN题引发的思考:jarvisOJ_typo
最近做了一道ARM架构的PWN题,给我带来很多的思考。为什么要做ARM的呢?因为在很久之前就提及过想要向IoT漏洞挖掘方面进行延展,并且有过一段时间去复现一些路由器的漏洞,但是感觉基础并不是很扎实。所以这段时间潜心学习ARM寄存器及指令集,并且通过接下来的这道ARM PWN题进行实践与摸索,文章的末尾也会列出通过这道题带来的一些感悟希望我们都能找到自己的方向,按照计划不断前行。编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ
2021-06-28 18:45:50
1333
7
原创 ubuntu20.04 PWN(含x86、ARM、MIPS)环境搭建
最近在ubuntu20.04中重装了一遍PWN的环境,顺带着安装了ARM和MIPS的交叉编译及运行环境。装的时候也是摸着石头过河,好在拍了很多快照,即使装错了也没有关系,下面是已装的工具列表:
2021-06-25 13:28:39
30729
51
原创 好好说话之House Of Einherjar
又鸽了好久,抱歉哈~ 总的来说House Of Einherjar这种利用方法还是挺简单的,有点像chunk extend/shrink技术,只不过该技术是后向,并且利用top_chunk合并机制,个人觉得杀伤力比较强大
2021-06-10 20:30:01
1367
8
原创 (补题)HITCON 2018 PWN baby_tcache超详细讲解
好久没有更新了,这道题利用的是IO_FILE输出的方式进行泄露libc地址,需要结合着上一篇[好好说话之IO_FILE利用(1):利用_IO_2_1_stdout泄露libc]一起来看,最近参加了安网杯,其中的pwn题也是利用IO_FILE进行输出的题,很幸运获得的第二名的成绩,大佬带飞~ 得抓紧把好好说话系列写完啦~
2021-05-19 18:59:44
1658
17
原创 好好说话之IO_FILE利用(1):利用_IO_2_1_stdout泄露libc
前言这道题是wiki上tcache attack部分的第二道例题,原题在wiki那个题包里,需要自己找一下,忘记在哪了。。。。。其实个人感觉这道题的考点并不是tcache attack,而是在于IO_FILE的利用。因为这道题与以往所见并不太相同,并没有输出函数,也就意味着无法通过往常的方式利用程序自身的输出函数进行泄露内存地址,所以这时候就需要利用IO_FILE的方式进行输出(我也是第一次遇到,肝了好几天)。这篇文章主要分为两个部分,前半部分主要讲解IO_FILE泄露libc的方式,后半部分是HITCO
2021-02-19 21:37:12
5250
17
原创 (补题)LCTF2018 PWN easy_heap超详细讲解
这道题是wiki上tcache attack 的Challenge 1,题目需要自己找一下。尝试上传到CSDN上,但总是提示已有,不知道是什么情况。这道题总的来说比较复杂,涉及到的知识点有:tcache分配、unsorted bin分配、堆块合并分割、tcache检查、hook。吐槽一点,堆块的id为什么非得从0开始啊!啊!啊!啊!总的来说收获满满,对tcache这类的题目理解更加深刻了(*^▽^*)
2021-02-08 18:09:40
2373
17
原创 好好说话之Tcache Attack(3):tcache stashing unlink attack
tcache stashing unlink attack这种攻击利用有一个稍微绕的点,就是small bin中的空闲块挂进tcache bin这块。弯不大,仔细想想就好了
2021-02-03 22:01:08
2141
4
《【黑盒模糊测试】路由器固件漏洞挖掘实战-AFL++ qemu-mode》配套练习实例
2023-02-21
hollk的protobuf文章配套练习代码
2022-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人