开始我的第一次模糊测试
终于准备好了!
执行下面的命令,就可以开始测试了:
wfuzz fuzz first-fuzz
经过短暂的启动检查后,您可以看到如下的界面:
┌───────────────────────────────────────────────────────────────────────────────┐
│██╗ ██╗███████╗██╗ ██╗███████╗███████╗ by Wingtecher 1.6.10-fast │
│██║ ██║██╔════╝██║ ██║╚══███╔╝╚══███╔╝ │
│██║ █╗ ██║█████╗ ██║ ██║ ███╔╝ ███╔╝ Platform: │
│██║███╗██║██╔══╝ ██║ ██║ ███╔╝ ███╔╝ https://wingfuzz.com │
│╚███╔███╔╝██║ ╚██████╔╝███████╗███████╗ Login as: │
│ ╚══╝╚══╝ ╚═╝ ╚═════╝ ╚══════╝╚══════╝ USERNAME │
├──────────────────────────────────────────┬────────────────────────────────────┤
│ Regression │ Fuzz │
├──────────────────────────────────────────┴────────────────────────────────────┤
│ App: first-fuzz Module: echo │
├───────────────────────────────────────────────────────────────────────────────┤
│ ███████████ │
├─────────────────────────────┬────────────────────────┬────────────────────────┤
│Status: NULL │Test Case: 0 │ │
│Job: 1 │Path: 0 │Crash: 0 │
│CPU Time: 0s │Execution: 0 │ │
│Start: 08/10 20:43 │Exec/Sec: 0 │ │
├─────────────────────────────┴────────────────────────┴────────────────────────┤
│Fuzzer #1: Starting fuzzer instance afl++ │
│Fuzzer #1: Lifecycle starting │
│Fuzzer #1: Lifecycle running │
│ │
└───────────────────────────────────────────────────────────────────────────────┘
看到这个界面说明您的测试已经成功启动了。这个例程在模糊测试面前太简单了,您应该可以立即看到Crash的数字变成了1。 接下来您可以使用以下步骤,在平台上看到详细的错误报告。
- 在平台导航菜单中找到「应用测试」 -> 「项目管理」。
- 在右边的视图中找到
first-fuzz
这个应用。 - 进入详情后,选择模块
echo
。 - 点击进去后,在下方的缺陷列表就能看到一个缺陷,类型为内存问题,详情中有stack-buffer-overflow-read。
- 点击缺陷编号进入页面,可以看到缺陷详情,下方会有触发时的调用栈。
默认参数下模糊测试会一直运行下去,当您想停止测试时,输入 Ctrl-C
就可以停止。
为什么测试是在本地运行,而不是云端运行?
WINGFUZZ同时提供本地测试和远程测试两种模式。
本地测试的模式更适合测试驱动开发、调试的过程,因为可以更高效地获取系统反馈,开展debug工作。远程测试则适合驱动开发完成后,利用云端算力开展实际测试。因此,在本文档的前几个章节,我们都将基于本地测试模式,介绍WINGFUZZ的基础用法,便于用户及时发现问题。
而远程测试模式当然也已经开放,详情可参见【远程测试】章节。
如果您完成了这个例子,想要更进一步了解模糊测试在实际项目上如何使用,请继续查看【开始实战测试】章节。
关于 「应用」、「模块」 等概念,您可以参考 进阶使用 章节。
关于 「内存问题」、「未定义行为」 等错误类型,您可以参考 支持的问题类型 章节。