- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在研究 Windows 漏洞利用开发,并致力于通过 Spike 定位应用程序中的一些崩溃。我通过我编写的 scapy 脚本手动定位了崩溃,并修改了某些数据。我当前的问题是尝试编写一个 Spike 模板来对其他崩溃进行模糊测试,但我目前无法让 Spike 对我发送的二进制数据进行模糊测试——它总是发送相同的东西。利用其他 Spike 调用,即 s_word
、s_binary_bigendian_word
都会导致:
generic_send_tcp: undefined symbol :s_word
generic_send_tcp: undefined symbol: s_binary_bigendian_word
等
有问题的应用程序是“Disk Saavy 10.4.18”,它有一个已知的通过 SEH 的缓冲区溢出。我知道有一个可用的漏洞——请不要把我链接到那个。我正在尝试学习如何从对二进制协议(protocol)进行模糊测试到完全利用。
我已经捕获了一些初始流量并将其工作到 3WHS 的 scapy 脚本中,然后是 PSH,确认我的数据。下面是示例数据包的原始数据:
0000 75 19 ba ab 03 00 00 00 00 00 00 00 1a 00 00 00 u...............
0010 20 00 00 00 00 00 00 00 53 45 52 56 45 52 5f 47 .......SERVER_G
0020 45 54 5f 49 4e 46 4f 02 32 01 44 41 54 41 01 30 ET_INFO.2.DATA.0
0030 01 00 00 00 60 c0 f1 02 ....`.......`...
前 12 个字节必须保持原样(似乎——不是我的问题的一部分),否则应用程序无法正确解析它。然而,紧随其后的四个字节被插入到 ECX 中。将这四个更改为类似于 1A CC CC CC
的内容会导致 ECX 运行良好,成为 CC CC CC 1A
并且应用程序崩溃。这一切都很好。 Scapy 很棒,但我更愿意使用像 SPIKE 这样的模糊测试框架。
第一个(和第二个)问题:虽然查看 Spike 的“文档”允许我创建模糊测试模板并发送我的数据,但我目前无法真正“模糊”字节我在瞄准我的 Spike 脚本(可能不好)如下:
s_binary("\\x75\\x19\\xBA\\xAB\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00");
s_block_start("ecx");
s_binary("0x1A000000");
s_block_end("ecx");
s_binary("\\x20\\x00\\x00\\x00\\x00\\x00\\x00\\x00");
s_string("SERVER_GET_INFO");
s_binary("\\x02");
s_string("2");
s_binary("\\x01");
s_string("DATA");
s_binary("\\x01");
s_string("0");
s_binary("\\x01\\x00\\x00\\x00");
s_string("`");
s_binary("\\xC0\\xF1\\x02");
Side note-- if there's a better way to write this script, let me know.
(minus the block, that's just for learning)
使用 generic_send_tcp 192.168.138.134 9124 diskSaavy.spk ecx 0
运行模板,服务器会响应,但负载中的字节永远不会被修改,并且会一遍又一遍地发送相同的负载。 我做错了什么?
现在,后来查看文档和大量谷歌搜索,结果尝试了许多其他更有针对性的值,例如 s_word
、s_binary_word
s_binary_bigendian_word_variable
和 LE 分别。以上所有内容均通过谷歌和类似 An Introduction to SPIKE, the Fuzzer Creation Kit 的文章找到, 和 Fuzzing Frameworks
所以我将 s_binary("0x1A000000");
更改为 s_binary_variable("0x1A000000");
, s_word("0x1A000000");
等等,每次我得到:
# generic_send_tcp 192.168.138.134 9124 diskSaavy.spk ecx 0
Total Number of Strings is 681
Fuzzing
Fuzzing Variable 0:0
generic_send_tcp: undefined symbol: s_word <--- my call
这让我抓狂。到目前为止,我已经尝试了各种不同的调用,例如上面的示例,并按照对 SO 上相关问题的回答所建议的安装 binutils
,但没有任何解决方案有效。我读到 undefined symbol
可能与链接器问题有关,但这有点超出我的知识水平。如果能得到任何帮助,我将不胜感激。
有什么想法吗?谢谢。
最佳答案
我不知道 Spike 是否已维护。 Sulley已经取代它,但也不是很活跃。 boofuzz更积极地保持静止并根据一些相同的原则运行。 Documentation .
不确定 Spike,但 Sulley 和 boofuzz 有一个“fuzzable”参数,当设置为 false 时,禁用元素上的模糊测试,因此您可以尝试将其显式设置为 true(尽管默认情况下通常为 true)。
编辑:披露:我维护 boofuzz。
关于c - 两部分 : SPIKE fuzzer: "undefined symbol: s_word",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49481644/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 6 年前。 Improve
我有两个应用程序,Sender.exe 和 Receiver.exe。我必须对发送方与接收方之间发送的 tcp 数据包进行模糊测试。 我是 Peach Fuzzer 的初学者。您能否提供一个示例(Pe
我目前正在研究 Windows 漏洞利用开发,并致力于通过 Spike 定位应用程序中的一些崩溃。我通过我编写的 scapy 脚本手动定位了崩溃,并修改了某些数据。我当前的问题是尝试编写一个 Spik
虽然我认为这段代码中存在多个问题,但我想首先解决我的编译器错误。预先感谢您的任何建议。接下来我将尝试解决运行错误。 错误: fuzzer.c: In function ‘main’: fuzzer.c
我是一名优秀的程序员,十分优秀!