![]() |
Предыдущая статья - ссылочка
Следующая статья: [6] Давайте учиться SQL-инъекциям вместе! Ссылка на задание: SQL injection challenge Ооо даа. Я решил 5й таск, отдельное спасибо моему сэнсэю explorer`y https://forum.antichat.xyz/attachmen...ac952d31e4.png Я начал копать в сторону команды union, так как особого представления о его работе не имел И на первом же сайте нашёл решение моей проблемы - Команда UNION - слияние таблиц | Трепачёв Дмитрий Проблема заключалась в том что оператор union объединяет столбцы первой и второй таблицы. А из задания мы знаем, что в таблице users 3 столбца id, login, pass, а вот в таблице secret уже 2 столбца или поля - одно и тоже. И вот из-за этого возникала наша ошибка. Все, наверное, уже догадались, чтобы решить проблему нужно в таблице secret заполнить 3й столбец. Если вы уже почитали описание оператора union по ссылке которую, я вам дал, то уже наверняка знаете, что мы сейчас будем делать. https://forum.antichat.xyz/attachmen...fd61279ae1.png Следуя подсказке составляем наш запрос... https://forum.antichat.xyz/attachmen...730f962a47.png И получаем корректный вывод таблицы, теперь только остаётся вставить имена столбцов из таблицы secret, как их узнать разобрал в прошлой статье. https://forum.antichat.xyz/attachmen...2b4d4fb29e.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. Это не инфа о таблице, в задании уже дано название таблицы secret, так мы вытаскиваем название колонок. Но так как название таблицы известно, но нужно ставить условие, и тогда не будет выводиться ненужная куча строк. 1' union select 1, 2, column_name from information_schema.columnswhere table_name='secret'# |
Цитата:
|
Цитата:
|
| Время: 05:29 |