python - Sulley 模糊测试框架中的位标志依赖性

标签 python network-protocols penetration-testing fuzzing

我正在尝试与 Sulley 一起构建一个模糊器。我正在使用的协议(protocol)有一个字节 control field 。该字段中设置的位确定后面可以包含哪些字段。现在我想知道如何使用 dep 实现此行为Sulley 中的参数。唯一dep_compare可用的运算符有 "==, !=, >, >=, <, <=" ,但我认为我无法检查是否使用这些运算符在另一个字段中设置了位。那么我该怎么做呢?

s_byte(0b1000000, "control_field")

# The following block shall be present if bit 7 is set in control_field
# I'd like to use something like 
# > control_field & 0b1000000 != 0 
# but I don't know how

if s_block_start("something_optional", dep="control_field", dep_compare="?"):
    s_short(0x1234, "optional")
s_block_end()

最佳答案

如果您只想检查最高位,则可以使用 >=,因为 0b10000000 只是一个数字。

if s_block_start("something_optional", dep="control_field", dep_compare=">=", dep_value=0b10000000):

但是,如果您想检查较低位,则需要实现自己的运算符。在 sulley/blocks.py 中,查找 Block 类及其 render 方法。有一大块 if block 应该不难修改。例如

        if self.dep_compare == "&" and self.dep_value & self.request.names[self.dep].value != self.dep_value:
            self.rendered = ""
            return

关于python - Sulley 模糊测试框架中的位标志依赖性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33542502/

相关文章:

http-headers - 主机头注入(inject)

python - 无法将列表中的随机选择写入文本文件

python - 尝试从 nytimes.com 下载 .pdf .png 和 .jpg

networking - 两台计算机通过互联网找到对方

angular - RxJS 库中是否存在安全问题?

python - Django 管理员 : Grouped data in the list

python - 当不同用户之间的底层表更改时,MySQL View 不会更新

tcp - 设置 TIME_WAIT TCP

security - 了解 TLS/SSL 协议(protocol)