所以让我解释一下,我想模糊一个名为Y
实现自定义协议的闭源应用程序让我们命名协议X
。Y
是用 C 编写的。
有没有办法修补send/read
家庭函数以从文件而不是套接字读取?
这可能适用于 AFL/AFL++ 模糊器吗?
请记住,该应用程序是为类 UNIX 生态系统开发的。
问问题
61 次
1 回答
1
是的,您可以通过在命名管道 (fifos) 和通过 netcat 的 TCP 连接之间建立桥接轻松地做到这一点。
创建两个文件(命名管道):
mkfifo /tmp/program_input /tmp/program_output
现在,在这些文件和应用程序之间架起一座桥梁。
如果应用程序是 TCP/IP 客户端,您的网桥将是 TCP/IP 服务器:
tail -f /tmp/program_input | nc -kl 127.0.0.1 50000 | tee /tmp/program_output > /dev/null
然后,您必须将应用程序的对等 IP 地址配置为运行网桥的主机的 IP。端口也必须匹配并且是任意的。(上例中的“50000”。)
如果您无法更改应用程序使用的 IP 地址/TCP 端口,则必须将路由器上的这些映射到网桥应用程序的 IP/端口(请参阅“端口转发”)。
如果应用程序是 TCP/IP 服务器,则创建一个 TCP/IP 客户端作为桥接器:
tail -f /tmp/program_input | nc <application_ip_address> <application_port> | tee /tmp/program_output > /dev/null
如果您想向正在分析的网络应用程序写入内容,请写入/tmp/program_input
. 阅读/tmp/program_output
以查看其输出。
我对 AFL/AFL++ 不太熟悉,但您当然可以直接与应用程序通信,或者也可以为 fuzzer 建立套接字/文件桥。
于 2021-06-07T22:23:47.547 回答