[5] Давайте учиться SQL-инъекциям вместе!

iBragimoff

Green Team
09.07.2019
83
19
BIT
0
Предыдущая статья - ссылочка
Следующая статья: [6] Давайте учиться SQL-инъекциям вместе!
Ссылка на задание:

Ооо даа. Я решил 5й таск, отдельное спасибо моему сэнсэю explorer`y

Screenshot_1.png


Я начал копать в сторону команды union, так как особого представления о его работе не имел
И на первом же сайте нашёл решение моей проблемы -
Проблема заключалась в том что оператор union объединяет столбцы первой и второй таблицы.
А из задания мы знаем, что в таблице users 3 столбца id, login, pass, а вот в таблице secret уже 2 столбца или поля - одно и тоже.
И вот из-за этого возникала наша ошибка. Все, наверное, уже догадались, чтобы решить проблему нужно в таблице secret заполнить 3й столбец.
Если вы уже почитали описание оператора union по ссылке которую, я вам дал, то уже наверняка знаете, что мы сейчас будем делать.

Screenshot_3.png


Следуя подсказке составляем наш запрос...

Screenshot_4.png


И получаем корректный вывод таблицы, теперь только остаётся вставить имена столбцов из таблицы secret, как их узнать разобрал в прошлой статье.

Screenshot_5.png

Пароль стёр, чтобы не спойлерить

Запрос составлен, задание пройдено, но меня не оставляет спокойно спать один вопрос.
Есть вот такой запрос: ' union SELECT id,login,pass, 0 FROM table_name -- -
Ноль подставляется автоматически в 4й столбец?

Какое-же всё таки блаженство, когда у тебя что-то получается. Не останавливайтесь перед трудностями и топите вперёд за знаниями!
 
Забыл упомянуть, что нашёл хороший курс по SQL, который советую смотреть параллельно решению тасков, ибо бывают моменты, когда ты не понимаешь откуда что берётся в такие моменты и надо погружаться глубже за пониманием происходящего.
 
Как я прошел возможно далеко и не оптимально ;)
1. Инфа о таблице: 1' union select 1, table_name, column_name from information_schema.columns#
2. Выборка по полученным именам колонок из предыдущего запроса: 1' union select dfgfddfgdfdfdf, dfgdfgfdg, 1 from secret#
 
Последнее редактирование:
Как я прошел возможно далеко и не оптимально ;)
1. Инфа о таблице: 1' union select 1, table_name, column_name from information_schema.columns#
2. Выборка по полученным именам колонок из предыдущего запроса: 1' union select dfgfddfgdfdfdf, dfgdfgfdg, 1 from secret#
Пусть способ не за 1 приём, а за два, но тоже рабочий, только поправлю:
1. Это не инфа о таблице, в задании уже дано название таблицы secret, так мы вытаскиваем название колонок. Но так как название таблицы известно, но нужно ставить условие, и тогда не будет выводиться ненужная куча строк.

1' union select 1, 2, column_name from information_schema.columns
where table_name='secret'#
 
Пусть способ не за 1 приём, а за два, но тоже рабочий, только поправлю:
1. Это не инфа о таблице, в задании уже дано название таблицы secret, так мы вытаскиваем название колонок. Но так как название таблицы известно, но нужно ставить условие, и тогда не будет выводиться ненужная куча строк.

1' union select 1, 2, column_name from information_schema.columns
where table_name='secret'#
Я не знаю что меня так накрыло поздно ночью :) но мне казалось что моя миссия это найти имена колонок.... только это меня и с подвигло идти искать их имена...))
 
Я не знаю что меня так накрыло поздно ночью :) но мне казалось что моя миссия это найти имена колонок.... только это меня и с подвигло идти искать их имена...))
Изначально, я тоже охотился за именами колонок, думал что только узнав имена колонок смогу вывести содержимое, оказалось, что можно было просто воспользоваться * :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!