Сообщение от
jecka3000
Gidz, не во всех случаях бывает, что Выводится ошибка, бывает просто пустой лист, поэтому и применяются подзапросы типа and или or, например, если это выводит ошибку ?id=123+and+1=0+union+select+1,2,3/*, а ?id=123+and+1=1+union+select+1,2,3/* выводит саму страницу 123, то мы имеем инъекцию
Зачем говоришь, если сам абсолютно ничего в этом не понимаешь?
"and 1=0" это не подзапрос. Бывает так, что из БД не выводятся в цикле все значения, а только первая запись. При запросе
Код:
SELECT `id`, `username`, `password` FROM `users` WHERE `id` = 1 UNION SELECT 1,2,3
mysql вернет результат, состоящий из двух строк, примерно так:
Так вот, если в скрипте выводится только первая строка, то надо сделать так, чтобы первой была строка с нашей инъекцией, поэтому и добавляется "and 1=0", "and null", etc... Таким образом запрос будет:
Код:
SELECT `id`, `username`, `password` FROM `users` WHERE `id` = 1 AND 1=0 UNION SELECT 1,2,3
Тоесть с БД выбирается та строка, где id = 0 и 1 = 2. 1 не будет равно 2 никогда, поэтому такой строки нету, и первой будет строка