Найти в Дзене
ЗА ИБАС

[PortSwigger, 4/16 SQLi] Атака UNION с внедрением SQL, поиск столбца, содержащего текст

А на подходе очередное прохождение лабраторной работы с PortSwigger Academy - Finding columns with a useful data type in an SQL injection UNION attack Душная теория, которую не хочется читать Причина выполнения атаки UNION с внедрением SQL-кода заключается в том, чтобы иметь возможность получить результаты из введенного запроса. Как правило, интересные данные, которые вы хотите получить, будут в форме строки, поэтому вам нужно найти один или несколько столбцов в исходных результатах запроса, тип данных которых является или совместим со строковыми данными.
Уже определив количество необходимых столбцов (а это мы научились делать в прошлой лабораторной работе), вы можете протестировать каждый столбец, чтобы проверить, может ли он содержать строковые данные, отправив серию полезных данных UNION SELECT, которые помещают строковое значение в каждый столбец по очереди. Например, если запрос возвращает четыре столбца, вы должны отправить: ' UNION SELECT 'a',NULL,NULL,NULL--
' UNION SELECT NU
Оглавление

А на подходе очередное прохождение лабраторной работы с PortSwigger Academy - Finding columns with a useful data type in an SQL injection UNION attack

Lab: SQL injection UNION attack, finding a column containing text | Web Security Academy

Душная теория, которую не хочется читать

Причина выполнения атаки UNION с внедрением SQL-кода заключается в том, чтобы иметь возможность получить результаты из введенного запроса. Как правило, интересные данные, которые вы хотите получить, будут в форме строки, поэтому вам нужно найти один или несколько столбцов в исходных результатах запроса, тип данных которых является или совместим со строковыми данными.

Уже определив количество необходимых столбцов (
а это мы научились делать в прошлой лабораторной работе), вы можете протестировать каждый столбец, чтобы проверить, может ли он содержать строковые данные, отправив серию полезных данных UNION SELECT, которые помещают строковое значение в каждый столбец по очереди. Например, если запрос возвращает четыре столбца, вы должны отправить:

' UNION SELECT 'a',NULL,NULL,NULL--
' UNION SELECT NULL,'a',NULL,NULL--
' UNION SELECT NULL,NULL,'a',NULL--
' UNION SELECT NULL,NULL,NULL,'a'--

Если тип данных столбца несовместим со строковыми данными, введенный запрос вызовет ошибку базы данных, например:

Conversion failed when converting the varchar value 'a' to data type int.

Если ошибка не возникает, а ответ приложения содержит некоторое дополнительное содержимое, включая введенное строковое значение, то соответствующий столбец подходит для получения строковых данных.

Постановка задачи лабораторной

Эта лабораторная работа содержит уязвимость SQL-инъекции в фильтре категорий продуктов. Результаты запроса возвращаются в ответе приложения, поэтому вы можете использовать атаку UNION для извлечения данных из других таблиц. Чтобы построить такую ​​атаку, вам сначала нужно определить количество столбцов, возвращаемых запросом. Вы можете сделать это, используя технику, которую вы изучили в предыдущей лабораторной работе. Следующим шагом является определение столбца, совместимого со строковыми данными.

Лаборатория предоставит случайное значение, которое необходимо отобразить в результатах запроса. Чтобы выполнить лабораторную работу, выполните атаку UNION с внедрением SQL, которая возвращает дополнительную строку, содержащую предоставленное значение. Этот метод помогает определить, какие столбцы совместимы со строковыми данными.

ГДЗ Решение лабораторной работы, ради которого мы тут и собрались

Зайдя на лабораторную работу, и наугад ткнув рандомный фильтр (я рандомно ткнул в Gifts) получаем исходный полигон

-2

Согасно заданию, чтобы решить лабораторную работу, нам необходимо

  1. Найти количество столбцов в таблице
  2. Найти, в каком из найденных столбцов присутствует строковый тип данных

ШАГ ПЕРВЫЙ

Согласно методу из прошлой лабы определяем количество столбцов вводя

https://0a070051043a0581c0b4df8d00550061.web-security-academy.net/filter?category=Gifts' UNION SELECT NULL, NULL, NULL--

Думаю, не стоит перебирать с одного NULL, потом два NULL, а возьмем сразу три, потому что в таблице первый столбец -название, второй - цена, а третий - непонятная кнопка, в которой лежит ссылка. Следовательно всего столбцов в таблице 3 и более, и там уже как повезет. Да, а мы просто взяли 3, и нам повезло. Классно ведь, когда везет

На этом моменте мы поняли, что столбцов - 3
На этом моменте мы поняли, что столбцов - 3

ШАГ ВТОРОЙ

Наверняка Вы заметили строку, которой необходимо 'Эксплуатировать БД'

-4

У меня эта строка TKHhLf. Ей и будем пользоваться

Давайте будем подбирать, в какую NULL из данного запроса надо подставить данную строку для успешного прохождения лабы

https://0a070051043a0581c0b4df8d00550061.web-security-academy.net/filter?category=Gifts' UNION SELECT NULL, NULL, NULL--


Затестим
первый вариант

https://0a070051043a0581c0b4df8d00550061.web-security-academy.net/filter?category=Gifts' UNION SELECT 'TKHhLf', NULL, NULL--
-5

Жаль, но нас постигла неудача

Затестим второй вариант

https://0a070051043a0581c0b4df8d00550061.web-security-academy.net/filter?category=Gifts' UNION SELECT NULL, 'TKHhLf', NULL--
-6

Вау, удача благосколнна к нам сегодня!
Какие же мы молодцы!

Держи юмореску на финал, все равно дальше ничего читать не будешь

да, жизнь такова, и некава иначе
да, жизнь такова, и некава иначе