Найти тему

SQL-инъекция. Читаем информацию из базы данных.

Здравствуйте, дорогие друзья.

Продолжаем работать с нашим веб-сайтом Mutillidae, и попробуем определить, сколько стоблцов может отображаться на этой странице. Вспомним предыдущий пример, и он будет непосредственно связан с дальнейшими шагами. Вот наша страница, с которой мы работали в прошлом примере:

-2

Как видим, много информации отображается в поле с ошибками.

Для дальнейших манипуляций, мы будем использовать команду «order by».

Вспомним, что команда «order by» со значением 1 выводила учетные записи, а значение 50 000 выводило ошибку.

Давайте попробуем значение «10»:

-3

Это значение выдает ошибку. Иными словами, значение должно быть меньше.

Затестим значение «5»:

-4

Все работает.

Теперь введем значение «6»:

-5

Видим ошибку, а это значит, что в таблице существует 5 столбцов.

Следующим шагом будет создание собственного выражения «SELECT».

Обычно для вывода используется следующий формат: «Select * from accounts where username = '$USERNAME' and password='$PASSWORD'», но так как мы пытаемся все сделать через URL, нам придется в начале выражения прописать команду «UNION». Нам просто нужно представить, что происходит в этом приложении. Мы уже знаем некоторую информацию по таблице сайта, а именно в ней присутствует 5 записей, и выражение будет принимать вид: «union select 1,2,3,4,5». Вставим в строку URL наше выражение, которое принимает форму:

-6

Вставляем эту команду в строку URL, и получаем вывод:

-7

Все сработало хорошо, и это первая выборка из таблицы.

Обратите внимание на последний вывод записи. Значения 2,3,4 можно изменять в нашей команде, для более глубокого изучения базы данных.

Можем попробовать просмотреть нашу базу данных, и вместо значений 2,3,4, я введу именование столбцов:

-8

Это выражение должно отобразить текущую базу данных.

Протестируем данную команду:

-9

Отобразилась дополнительная учетная запись, с логином «owasp10». Это база данных (database). Вторая запись, с именованием «Password», отображает пользователя, и это «root@localhost». Третья запись отображает версию базы данных, что тоже очень важно.

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

И в данной ситуации, мы находимся под пользователем «root». Иными словами, мы можем подключиться к любой базе данных, любого пользователя на этом веб-сайте. Такого в реальной жизни не бывает, так как у каждого пользователя существует собственный набор информации.

Для тестирования и наглядности, мы будем иметь ввиду, что подключаемся только к «owasp10», с именем пользователя «root@localhost».

На этом все. Всем хорошего дня!