Boofuzz Notes

记录Boofuzz学习中的一些Tips

API docs

模糊测试协议形成Boofuzz脚本的通用步骤

针对特定协议做fuzz的一般思路:

ref:https://github.com/jtpereyda/boofuzz/discussions/625

1.使用 boofuzz 原语定义每个请求,例如 s_static()、s_string()、s_byte(); 2.根据协议状态转换连接定义的请求; 3.设置正确的连接,用于与目标进行通信; 4.如有必要,设置适当的监视器,以监视目标的状态; 5.初始化一个Session并将它们放在一起。

以ftp协议为例:

由于是在TCP层,所以使用TCPSocketConnection;
它是纯文本协议,因此 s_string() 可以改变值;
对于监控,这取决于您的真实环境。
正如您在第一篇文章中提到的, s_static() 用于常量(非突变)值。 s_byte() 可用于改变单个字节值。

控制模糊测试迭代次数

`在 Boofuzz 中,你可以使用 num_mutations 参数来控制模糊测试的迭代次数,从而限制模糊测试的用例数量。通过设置 num_mutations 参数为 10,你可以让 Boofuzz 在执行 10 个模糊化用例后停止模糊测试。

下面是一个示例代码,演示了如何在 Boofuzz 脚本中设置 num_mutations 参数:

from boofuzz import *

def define_proto(session):
    # 定义协议逻辑
    s_initialize("request")
    s_string("GET", fuzzable=False)
    s_delim(" ", fuzzable=False)
    s_string("/path", fuzzable=False)
    s_static(" HTTP/1.1\r\n")
    s_static("Host: example.com\r\n\r\n")

# 创建一个会话(session)
session = Session(target=Target(connection=SocketConnection("192.168.0.1", 80)))
define_proto(session)

# 设置 num_mutations 参数为 10
session.num_mutations = 10

# 启动模糊测试
session.fuzz()

在上述示例中,我们通过将 num_mutations 属性设置为 10 来指定 Boofuzz 执行 10 个模糊化用例后停止模糊测试。

请注意,num_mutations 参数是可选的,默认情况下,Boofuzz 会持续模糊测试,直到达到停止条件(例如超时或达到最大迭代次数)。通过设置 num_mutations 参数,你可以明确指定模糊测试的用例数量。

REF