提起模糊测试时我们在说什么-pr0mise.PDFVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
提起模糊测试时我们在说什么-pr0mise

原原文文地地址址:/tips/15572 0x00 基基础础知知识识 一一:区区分分 我们常说的漏洞挖掘,大致可以分为两种模式:白盒 黑盒. 1.白盒,又称透明盒测试,指我们清楚的了解程序的逻辑,获得设计思路,说明文档,源代码的情况下进行的测试. 优点:准确率高,定位到可能存在的漏洞位置处,能清楚的看到前后逻辑. 缺点:过于复杂,在代码量巨大的情况下,手工寻找要付出相当的精力,网传winNt4.0泄露过源码,但并未出现因该次泄露而导致的漏洞. 2.黑盒,又称功能测试,指在完全不了解内部信息的情况下进行碰撞测试 优点:可用性 重现性高,完全针对功能的测试,不同于白盒,在源码中实现漏洞函数细节但并未调用的情况,编译器会优化掉这个函数,也就是这个功能并不可用. 缺点:高误报,捕捉异常麻烦 二二:fuzz的的局局限限性性 我们根据自己的经验编写相应的规则, 白盒时,例如搜索gets strcpy fgets memcpy等函数,然后向上回溯,如上所说,有可能函数并未调用过,亦或在上层调用之前已经做了限制,例如: #!c #include string.h void test(char *arr){ char buffer[10] strcpy(buffer,arr) } int main (int argc,char **argv){ if(length (argv [1])=10) test(argv [1]) } 在黑盒时,例如出现越权漏洞 作者自留后门 多阶漏洞,我们手工测试可以精准的判断,换成程序的视角,这就是一个正常的功能,造成误报 0x01 fuzz的的各各阶阶段段 1. 确定目标 2. 细化规则确定发包数据 3. 发包 4. 异常捕获 5. hook api定位poc 一一:模模糊糊测测试试器器的的类类型型 常见的有命令行参数fuzz 环境变量fuzz 文件fuzz 网络协议fuzz 内存fuzz等 命令行参数就是上面的代码例子,环境变量fuzz,这个就是getenv aaa); 两种思路,不停的重写aaa变量的值和重启目标程序,第二点是必须的,第一点的改进思路hook getenv,重新实现一个getenv函数. 文件fuzz:覆盖性的写入数据,如果不读文件格式的说明文档,按字节覆盖,工作量巨大,有些文件格式会进行CRC效验,例如png文件格式.就像溢出保护的/gs选项. 网络协议fuzz:协议即传输数据的标准,数据本质上是01,根据协议对每个位置的划分来确定不同位置数据的意义,我们把这些位置称为块,块内的数据以key:value的方式存储,像是堆块中块首一样,有 特定的位置标注数据的大小,client按协议格式发包后,server端根据协议解析,假如随意修改了数据却没有修改块大小,server端就无法正确识别数据. 协议也分两种:简单文本协议 二进制协议 简单协议通讯的数据在可打印字符范围内,人工可阅读,例如ftp http协议 #!bash [root@xiyang ~]# nc 80 GET / HTTP/1.1 Host: Referrer: User-Agent: wooyun HTTP/1.1 200 OK ... 复杂如tcp/ip协议的NBNS,wireshark本身支持的协议比较多,或是本身公开或是逆向工程,将数据解析成肉眼可阅读的格式. 当面对复杂且闭源的协议,对其fuzz首要工作就是逆向工程,为此出现了内存形式的fuzz,直接在程序的内存空间里进行模糊测试 有如上代码,无限循环接受请求,在内存空间定位到parse之前插入数据而不必关心数据在recv之前是如何封装的,缺陷就是漏洞场景可能无法重现 二二:细细化化规规则则和和发发包包 除去内存fuzz,发包方式分两种:直接发送跟代理发送.第二种也叫启发式fuzz,wireshark可解析的情况下,针对特定字段fuzz 流程图如下: 本文以简单协议的ftp fuzz为例,瓶颈出现在发包过程中,要考虑server端的带宽和上游isp的响应速度,好在可以把server部署在本地. 以覆盖缓冲区为目的,截取不同长度的数据来发包,数据内容不能出现在用户层的内存地址, 我们喜闻乐见的栈溢出发生时会抛出内存地址读取或写入违例的异常,假如eip指向用户层内的地址可能不会抛出异常. 这里我们就用一串A来测试. 三三:异异常常捕捕获获 设想我们有一个长度为10的数组,数组内每组

文档评论(0)

ailuojue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档