Category Archives: fuzzing

编译JavaScriptCore并搭建调试环境

由于需要对JavaScriptCore进行模糊测试的原因, 像Safari这样采用JSC的浏览器在MacOS平台上运行, 而且由于浏览器沙箱逃逸经常需要利用到内核漏洞, 所以搭建一个MacOS环境是必需的. 0x01 配置MacOS Majave 14.10 虚拟机 主机: Ubuntu 16.04 64bits 虚拟机: VMware Workstation 14 Pro 14.1.3 build-9474260 安装镜像: macOS Mojave 10.14 18A391 Lazy Installer.cdr 7.7GB 解锁工具: unlocker v3.0.0 (建议使用最新的3.0.2版本, 因为3.0.0版本在安装vmware tools时出现问题) 关闭VMware进程, 以root身份运行unlocker内的lnx-install.sh和lnx-update-tools.sh chmod +x *.sh sudo … Continue reading

Posted in fuzzing, javascriptcore | Leave a comment

模糊测试: 初学者入门指南

模糊测试简介 模糊测试(Fuzzing), 简而言之, 就是为了触发新的或不可预见的代码执行路径或bug而在程序中插入异常的, 非预期的, 甚至是随机的输入. 因为模糊测试涉及到为目标提供大量的测试样例, 因此至少也会实现部分自动化. 模糊测试可以也应当用于测试每个需要接受某种形式输入的接口. 实际上, 模糊测试最起码就应该拿来用于测试每个从潜在恶意来源(比如互联网或用户提供的文件)获取输入的接口. 模糊测试是对其他测试技术的补充. 由模糊测试揭露出的问题往往是开发人员不太可能构建的输入(例如, 在处理一些边界情况, 数据正确性和错误处理例程时的输入)触发的. 在常规自动化测试过程中, 模糊测试扩大了代码覆盖范围, 提高了代码覆盖率测试程度. 通过模糊测试使用的非预期输入通常会触发一些平时不会触发的执行流. 很多地方都需要进行模糊测试. 它是你系统开发生命周期(SDLC)的一部分, 在这部分里, 你需要确保你完成了改善目标所要的系统性工作, 或是你只是想解决一些bug也行. 要如何费心于模糊测试取决于你的最终目标和相关资源, 本文只是帮你如何从模糊测试中获取更多的回报.

Posted in fuzzing | Leave a comment