Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

MySql как по очереди вывести список всех столбцов таблицы.

Иван Иванов Мудрец (17783), закрыт 4 года назад
Имеется сайт с SQL-инъекцией, которая позволяет делать вложенные запросы, но только в том случае, если запрос вернет в ответе только 1 строку.
Сначала я сделал SELECT version() - запрос вернул "8.0.16" - то есть мы убедились, что на сервере стоит mysql.

Дальше пытаюсь сделать следующее:

Попытка 1: SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'students' - выбрасывает ошибку

Попытка 2: SHOW COLUMNS FROM students; - выбрасывает ошибку

Попытка 3: SHOW TOP 1 COLUMNS FROM students; - ошибка

Попытка 4: DESCRIBE 'students' - ошибка.

Попытка 5: SELECT column_name
FROM information_schema.columns
WHERE table_name='students'; - ошибка уже другая - "Subquery returns more than 1 row in /var/www/html/lab4.php on line 14"

Но если исправить это на:

SELECT TOP 1 column_name
FROM information_schema.columns
WHERE table_name='students'; - снова ошибка Fatal error: Uncaught Error

Так как же можно это сделать? Что-то мне подсказывает, что вариант 5 должен оказаться рабочим, только не получается реализовать.

У кого-нибудь есть идеи? Буду благодарен за любую помощь.
Лучший ответ
... Гений (84839) 4 года назад
SELECT column_name
FROM information_schema.columns
WHERE table_name='students' LIMIT 1

Ну и соотв. дальше сдвигать LIMIT'ом?
Иван ИвановМудрец (17783) 4 года назад
ЕЕеееее, мэн! Реально работает) Спасибо огромнейшее, уже час мучаюсь) А как сделать, чтобы вывелось не первое значение, а второе, например?
... Гений (84839) LIMIT 1,1 LIMIT 2,1 и т. д.
Остальные ответы
Илья Ш Просветленный (20237) 4 года назад
SELECT *
FROM information_schema.columns
WHERE table_name='students' LIMIT 1
Иван ИвановМудрец (17783) 4 года назад
Не, так не работает: Uncaught Error. Предыдущий способ заработал.
Похожие вопросы