n4e/\@
09.11.2008, 05:09
Хочу разобраться как вообще писать брутфорс.
Выбрал цель Simple TDS, там надо подставлять все го лишь один параметр - пароль.
Для примера возьмем сайт http://gtteam.ru/tds/index.php
(сам тестирую на локалхосте)
Предположим что на этом сайте стоит пароль 123456
Запрос-ответ при правильном пароле
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
Ответ при неправленом запросе:
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
т.е все тоже самое только при ответе не выдаются куки.
Понятно что брут мне не кто не напишет, да и мне самому уже интересно понять как со всем этим работать.
Вот то что есть:
#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%, и даже вроде длину контента и пароль отсылает.
Выбрал цель Simple TDS, там надо подставлять все го лишь один параметр - пароль.
Для примера возьмем сайт http://gtteam.ru/tds/index.php
(сам тестирую на локалхосте)
Предположим что на этом сайте стоит пароль 123456
Запрос-ответ при правильном пароле
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
Ответ при неправленом запросе:
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
т.е все тоже самое только при ответе не выдаются куки.
Понятно что брут мне не кто не напишет, да и мне самому уже интересно понять как со всем этим работать.
Вот то что есть:
#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%, и даже вроде длину контента и пароль отсылает.