Показать сообщение отдельно

  #5  
Старый 17.01.2010, 18:09
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
С нами: 9410786

Репутация: 2731


По умолчанию

Цитата:
Сообщение от 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 вернет результат, состоящий из двух строк, примерно так:
Код:
1 admin pass
1 2 3
Так вот, если в скрипте выводится только первая строка, то надо сделать так, чтобы первой была строка с нашей инъекцией, поэтому и добавляется "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 никогда, поэтому такой строки нету, и первой будет строка
Код:
1 2 3

Последний раз редактировалось mailbrush; 17.01.2010 в 18:21..
 
Ответить с цитированием