Хочу разобраться как вообще писать брутфорс. Выбрал цель Simple TDS, там надо подставлять все го лишь один параметр - пароль. Для примера возьмем сайт http://gtteam.ru/tds/index.php (сам тестирую на локалхосте) Предположим что на этом сайте стоит пароль 123456 Запрос-ответ при правильном пароле Code: http://gtteam.ru/tds/index.php POST tds/index.php HTTP/1.1 Host: gtteam.ru User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://gtteam.ru/tds/index.php Content-Type: application/x-www-form-urlencoded Content-Length: 11 pass=123456 HTTP/1.x 200 OK Date: Sun, 09 Nov 2008 00:14:21 GMT Server: Apache/1.3.39 (Unix) PHP/5.2.5 mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 FrontPage/5.0.2.2635.SR1.2 mod_ssl/2.8.30 OpenSSL/0.9.8b X-Powered-By: PHP/5.2.5 Set-Cookie: pwd=e10adc3949ba59abbe56e057f20f883e Connection: close Transfer-Encoding: chunked Content-Type: text/html Ответ при неправленом запросе: Code: HTTP/1.x 200 OK Date: Sun, 09 Nov 2008 00:20:41 GMT Server: Apache/1.3.39 (Unix) PHP/5.2.5 mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 FrontPage/5.0.2.2635.SR1.2 mod_ssl/2.8.30 OpenSSL/0.9.8b X-Powered-By: PHP/5.2.5 Connection: close Transfer-Encoding: chunked Content-Type: text/html т.е все тоже самое только при ответе не выдаются куки. Понятно что брут мне не кто не напишет, да и мне самому уже интересно понять как со всем этим работать. Вот то что есть: Code: #include <stdafx.h> #include <windows.h> #include <wininet.h> #pragma comment(lib,"wininet") #include <stdlib.h> #include <fstream> //Для чтения будующих паролей из файла using namespace std; #include <iostream> #include <conio.h> int main() { static TCHAR hdrs[] = _T("Content-Type: application/x-www-form-urlencoded"); static TCHAR accept[] = _T("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); // инициализируем WinInet HINTERNET hInternet = ::InternetOpen( TEXT("Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"), //Имя INTERNET_OPEN_TYPE_PRECONFIG, NULL,NULL, 0); HINTERNET hConnect = ::InternetConnect( hInternet, TEXT("gtteam.ru"), //Сервер к которому подключаемся INTERNET_DEFAULT_HTTP_PORT, NULL,NULL, INTERNET_SERVICE_HTTP, 0, 1u); HINTERNET hRequest = ::HttpOpenRequest( hConnect, L"POST", //Метод L"tds/index.php", //Страница где вводим пароль L"HTTP/1.1", NULL, 0, INTERNET_FLAG_KEEP_CONNECTION, 1); BOOL bSend = ::HttpSendRequest(hRequest, NULL, 0, "pass=123456", 11); //Длина контента 11 (pass=123456) _getch(); return 0; } С кодом пока что эксеперементирую поэтому такой кривой. Раньше еще было то что он выводил мне исходный код страницы, но я убрал т.к он вроде не нужен. Но вот что я должен делать дальше? А самое главное как? Я так понимаю что надо как то вытащить ответ который выдает сервер, какой функцией? Есть предположение что HttpQueryInfo Еще я очень сомневаюсь что код верный, но то что на сервере считаются зоходы это 100%, и даже вроде длину контента и пароль отсылает.
зачем вининет? ) ...google...#include "WINSOCK2.H"...send...recv... ога? p.s Вот тебе ахренительно подробный ман по работе с сокетами - hxxp://www.tenouk.com/cnwinsock2tutorials.html , зачитаешся ..
Это типо к чему ты написал? Тогда на Дельфе использование компонента TidHTTP и это ваще около 5 строчек кода. ппц.. ---------- LEE_ROY, а почему сокеты???? WinInet тоже не плохо
НУ то что я занимаюсь мозго*бством я понимаю. Но все равно раз взялся, то надо написать. Вот пример на сокетах http://pastebin.com/md930734 но там я тоже не могу выдернуть ответ на запрос+если судить по логам сервера то не какого запроса не приходит
Code: #include <stdafx.h> #include <winsock2.h> #include <windows.h> #include <iostream> #include <sstream> using namespace std; #define PORT 80 #define SERVERADDR "127.0.0.1" int main() { setlocale(LC_ALL,"RUS"); char buff [ 1024 ] = "" ; cout << ("TCP Client\n"); /*******************Проверка инициализации***************/ if ( WSAStartup ( 0x202, ( WSADATA * ) &buff [ 0 ] ) ) { cout << "WSAStart error \n " << WSAGetLastError ( ) ; return -1; } /********************************************************/ SOCKET my_sock ; /*******************Создаем сокет************************/ my_sock = socket ( AF_INET, SOCK_STREAM, 0 ); if ( my_sock < 0 ) // { cout << "Socket ( ) error\n" << WSAGetLastError ( ) ; return -1; } /********************************************************/ sockaddr_in dest_addr ; dest_addr.sin_family=AF_INET; //инет коннектинг dest_addr.sin_port=htons ( PORT ); //порт HOSTENT *hst; // хост if ( inet_addr ( SERVERADDR ) !=INADDR_NONE ) dest_addr.sin_addr.s_addr = inet_addr(SERVERADDR); else if ( hst=gethostbyname ( SERVERADDR ) ) ( ( unsigned long * ) &dest_addr.sin_addr ) [ 0 ] = ( ( unsigned long ** ) hst->h_addr_list ) [ 0 ] [ 0 ] ; else { printf ( "invalid address %s \n ", SERVERADDR ) ; closesocket ( my_sock ) ; WSACleanup ( ) ; return -1; } if (connect ( my_sock, ( sockaddr * ) &dest_addr, sizeof ( dest_addr ) ) ) { cout << " Connect error \n" << WSAGetLastError ( ) ; return -1; } cout << "Соединение с " << SERVERADDR << " успешно установлено \n"; int nsize; stringstream clientRequest; clientRequest << "GET / HTTP/1.1\r\n" "Host: 127.0.0.1\r\n" "User-Agent: MOBILKA\r\n" "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" "Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n" "Accept-Encoding: gzip,deflate\r\n" "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n" "Keep-Alive: 300\r\n" "Connection: keep-alive\r\n"; char clientRequest2[1000]; //int mlen; //mlen = strlen(clientRequest); send(my_sock, clientRequest.str().data(), clientRequest.str().size(),0); //send(my_sock, (char *) clientRequest, mlen, MSG_DONTROUTE); const int s_ciBufLen=1024; char cBuff[513]; string page; //int i=0; while (recv (my_sock, (char *) &cBuff, 512 , 0)> 0) { page+=cBuff; //i++; } //recv(my_sock, ( cout << i; closesocket ( my_sock ) ; WSACleanup ( ) ; return 0; } Почему на сервере не считается заход? Я по разному пробовал делать запрос\ответ. Результат прога либо стопорица на посылки-получение данных(ошибок нет, просто стоит на одном месте) либо возвращает пустую строку. Я так понимаю что либо ответ до сервера не доходит, либо он вобще к серверу не подключается. Юзер агент такой что бы не путаться в логах сервера, пробовал писать нормальный юзер агент на результат это не влияет ************* Разобрался. ошибка была в неправельной посылки заголовков