![]() |
Имеем уязвимый запрос типа SELECT ...
однако, скрипт выводит данные из таблиц не сразу, а предварительно из обрабатывает следующим образом: - обрабатываются только определенные целые числовые значения, например, 343, 45, 34556, 12345 полный список известен - повторяющиеся значения исключаются Да, есть вариант выводить информацию посимвольно. А есть ли более быстрый метод? скажем ... UNION SELECT ascii(mid(version(),1,1)) UNION select ascii(mid(version(),2,1)) ну и как-то преобразовать, чтобы они в набор попали. Выведет примерно так: 53 128 78 |
Поразмыслив около часа, нашел одно решение. Делим выходной диапазон на 2. Теперь перекрываем 2 диапазона. Получаем
UNION SELECT 500+instr('a...z',mid(version(),1,1)) union select 6000 UNION SELECT 500+instr('a...z',mid(version(),2,1)) union select 6001 ... Потом разбираем полученные результаты, если повторений нет, имеем чередование и все хорошо. Ну допустим мы поставили 40, т.е. 40/2=20 различных символов. При повторении символов картина будет иная и диапазоны чередоваться не будут, значит формируем новый запрос с того места, где прекратилось чередование. Итог, до 20 символов из БД за один запрос. И это в слепой инъекции. Круто? |
|
Цитата:
|
Придумал новый сверхбыстрый способ для слепой инъекции. Если у нас 160 разных значений, получим где-то 22 символа за запрос. Фишка вот в чем, приводим представление выводимых комбинаций значений к бинарному коду. Для одного символа потребуется всего 7 бит, вот и посчитайте. Притом, что у меня значения сортирует, а если без сортировки, то это будет дискретизация разряда бинарной последовательности, но это уже теория комплексных чисел, а я в школе плохо учился)
|
чето я туплю сегодня, давайте с примерами из консоли на вывод хеша
|
слепая инъекция != фильтрация выходных данных
слепая инъекция = отсутствие каких либо выходных данных под данными подразумеваются данные полученные из бд с помощью sql-j оперировать можно только на реакции приложения(https://www.owasp.org/index.php/Blind_SQL_Injection) может быть я чего то не понимаю, действительно покажите пример |
Yarbabin в сверху уже кинул ссылку, ситуация как в примере [4], только новости не в get, a формируются списком из номеров на странице. Так понятно? Т.е. Совсем ничего не выводиться, а только номера. Всего около 160 новостей, которые отсортированы попорядку. Суть метода пояснил выше. Чуть позже выложу реализацию, код весьма длинный.
|
Тема не новая, но я ее люблю (больше, чем бинарный поиск). Называется Bit Shifting, вот оригинальный ресерч.
В октябре писал PoC, где используется как раз эта техника + тема с keep-alive. Не знаю, работает ли он сейчас, поправить будет не сложно, а мне самому лень. Вот результаты, которые он мне давал на реальном сайте: http://i.imgur.com/51fnPIJ.png Те же условия с sqlmap'ом: http://i.imgur.com/iyxm6vg.png |
За ссылку спасибо, но Keep-Alive здесь как то не совсем в тему, ведь число запросов к sql- серверу от этого никак не изменится
|
| Время: 14:00 |