Здравствуйте, дорогие друзья.
Я хотел бы показать Вам, как можно использовать SQL-инъекции для чтения любого файла на сервере, даже за пределами директории «/www/», мы сможем прочесть содержимое в других директориях и файлах.
Помимо чтения, мы можем использовать SQL-инъекции для записи файлов на сервер.
Для начала, давайте рассмотрим чтение файлов. Откроем блокнот в Kali Linux, и отредактируем наше выражение, с которым Вы уже знакомы. Оно имеет вид: «union select null, username, null, null, null»:
Вместо «username», я хочу использовать функцию «load_file()», внутри скобок я пропишу файл, который хочу загрузить. Выражение примет вид: «union select null, load_file('/etc/passwd') null, null, null»:
Скопируем эту строку и вставим в URL, предварительно добавив одинарную кавычку, после логина, и комментария (%23):
В итоге мы смогли прочитать всю информацию, которая содержится в директории «/etc/paswd». Не стоит ограничиваться этой директорией.
Я хотел бы показать, как записываются файлы на сервер. Это очень полезно, так как Вы сможете написать любой код, который захотите.
Можно использовать функцию в выражении «into outfile», с сохранением конечного файла.. Продолжаем модифицировать наше выражение, и оно примет вид: «union select, null, 'example example', null, null, null into outfile '/var/www/mutillidae' testing.txt »:
Давайте пробовать запустить это выражение:
Видим ошибку, и наше выражение не работает..
Если мы детально ознакомимся с описанием ошибок, то убедимся, что у нас нет достаточных прав, для того, чтобы записывать что-либо на сервер.
Пойдем другим путем, и попробуем директорию с временными файлами, и, как Вы знаете — это «tmp».
Выражение будет модифицировано как: «union select null, 'example example', null, null, null into outfile '/tmp/testing.txt'»:
Все сработало верно.
Перейдем в нашу машину «Metasploitable 2», перейдя в директорию «/var/www/phpMyadmin», и увидим наш файл:
Если сопоставлять наши шаги, то мы можем увидеть, что они идентичны. Мы записали файл на сервер.
На этом все. Всем хорошего дня!