Сегодня продолжим разбираться в
SQL-инъекциях дальше. Предыдущие разборы можно посмотреть туть:✍️Что такое SQL инъекция
Логично предположить, что далеко не всегда сайт отображает ошибку при выполнение запроса. Такие уязвимости все еще можно эксплуатировать. У них даже есть отдельное название -
Blind. А значить для SQL-инъекции название будет Blind SQL-инъекция.Для того, чтобы ее найти, необходимо отслеживать изменения при отправке различных запросов: отсутствие части информации, появление новых элементов, отсутствие контента.
Поиск слепой инъекции начинается с определения параметров и использования логических операторов.
▪︎ascii
Одной из техник является использование функции
ascii. Она возвращает значение ASCII для конкретного строчного символа. Возвращает 0, если str - пустая строка.
SELECT ASCII('a');
Зачем это нам нужно? В комбинации с функцией
SUBSTRING, которая извлекает подстроку из строки начиная с любой позиции, мы можем извлекать по одному символу из таблицы и сравнивать его с кодом ascii.Синтаксис
SUBSTRING:
SUBSTRING(string, start, length)
Пример полезной нагрузки:
1' and ascii(substring((select database()),1, 1))>97--+
В случае успешного выполнения условия мы увидим изменение на странице. Чтобы не перебирать все символы линейно, можно использовать алгоритм бинарного поиска)
Список разборов:
✏️Blind SQL injection with conditional errors
✏️Blind SQL injection with conditional responses
✏️Blind SQL injection with out-of-band data exfiltration
✏️Blind SQL injection with out-of-band interaction
✏️Blind SQL injection with time delays and information retrieval
✏️Blind SQL injection with time delays
#writeup #web
@coffee_cube
