«Атаки и защита с помощью SQL-инъекций» Джастина Кларка.
Предлагает ряд тестов для обнаружения и подтверждения уязвимостей с помощью SQL-инъекций, вот мое резюме на стр. 65.
Ошибка запуска
"Отправьте '
или '--
и ожидайте получения ошибки."
Сообщение об ошибке или ошибка 500 на сервере указывают на уязвимость.Ответы, аккуратно содержащие '
или '--
(как у пользователя '
или '--
, недоступны с этим паролем ...), вероятно, не будут уязвимы, если не будут отслеживаться в стеке.
Всегдаистинное условие
"Отправьте 1' or '1'='1
или 1') or ('1'='1
и ожидайте получения каждой записи в базе данных."
Можно предположить, что сайт уязвим, еслиКод ответа - 200, и строка ответа не получена в ответе.Страницы, содержащие слово «ошибка» или строку атаки, обозначают сопротивление, как и 500.
Нет условия
"Отправьте value' or '1'='2
или value') or ('1'='2
и ожидайте уязвимое приложениеответить, как если бы он только получил value
. "
Всегда ложное условие
" 1' and '1'='2
или 1') and ('1'='2
. В случае успеха он не возвращает строкиз таблицы. "
Конкатенация Microsoft SQL Server
" 1' or 'ab'='a'+'b
или 1') or ('ab'='a'+'b
. В случае успеха возвращается та же информация, что и всегда истинное условие "
Конкатенация MySQL
"1' or 'ab'='a' 'b
или 1') or ('ab'='a' 'b
. В случае успеха возвращается та же информация, что и всегда истинное условие"
Конкатенация Oracle
"1' or 'ab'='a'||'b
или 1') or ('ab'='a'||'b
. В случае успеха возвращается та же информация, что и всегда истинное условие"
Дополнительные примеры приведены повсюдукнига.