我用Python做了一个简单的TCP fuzzer。我需要它能够接收一些响应,如果我没有收到响应,就中断循环。我的代码是:
import socket
from time import sleep
import sys
ip = raw_input ("please insert host ip: ")
port = input ("please insert port to fuzz: ")
packet = raw_input ("what string would you like to fuzz with? : ")
multi = input ("in what jumps would you liike to multiply the string ? (10 = A*10) : ")
host = ip, port
s = socket.socket()
char = packet * multi
a = 1
try:
while a > 0:
s.connect((host))
s.send(packet)
sleep(1)
print 'fuzzing param %s' % (packet)
packet = char + packet
s.close()
except (Exception):
print "Connection lost for some reason"'但是当我运行这个程序时,我得到了这个错误:
please insert host ip: 10.0.0.138
please insert port to fuzz: 80
what string would you like to fuzz with? : A
in what jumps would you liike to multiply the string ? (10 = A*10) : 2
fuzzing param A
Connection lost这很奇怪,因为它只是假设在一个无限的循环中重新连接(我知道服务器没有崩溃)
发布于 2012-07-15 18:41:55
远程终结点只是挂断了,可能是因为您发送的数据与它期望的格式不匹配。
您可以在每次远程端挂断时创建一个新连接,或者以远程端期望的格式发送数据。例如,如果远程端是HTTP服务器,您可能希望先发送请求行,然后发送模糊部分,如下所示:
GET / HTTP/1.0
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA发布于 2012-07-15 19:16:21
当你进行模糊测试时(一般来说),处理错误是非常重要的。当你向你的服务器发送胡言乱语时,你应该预料到会出问题。因此,我建议您使用try ... except ... finally: s.close()子句来包装调用。打印调试消息以查看何时发送失败,并开始查看原因-您不知道服务器对您发送的内容有何反应,而且您可能会在第一次调用后杀死服务器……
https://stackoverflow.com/questions/11491187
复制相似问题