Можно ли просмотреть все каталоги в файловой системе, используя mysql? - PullRequest
0 голосов
/ 15 февраля 2020

Я сейчас изучаю SQL инъекцию, и мне интересно, возможно ли отобразить все каталоги, используя SQL инъекцию в MySQL? Я имею в виду, я знаю, что есть функция load_file (), которая позволяет отображать файл, но как насчет каталогов (их содержимого)? Нужно ли загружать какую-то оболочку или есть лучшее решение для отображения всего содержимого?

1 Ответ

0 голосов
/ 15 февраля 2020

Функция LOAD_FILE () не будет читать каталоги. Он читает только обычные файлы.

Вот ссылка на указанную строку кода c, которая проверяет, является ли файл, который вы пытались открыть, обычным файлом, и, если это не так, возвращает ошибку. https://github.com/mysql/mysql-server/blob/8.0/sql/item_strfunc.cc#L3498

  if (!MY_S_ISREG(stat_info.st_mode)) {
    my_error(ER_TEXTFILE_NOT_READABLE, MYF(0), file_name->c_ptr());
    mysql_file_close(file, MYF(0));
    DBUG_ASSERT(maybe_null);
    return error_str();
  }

Мы также можем продемонстрировать. Я создал файл "/ tmp / world" и поместил в него слово "hello".

Я могу прочитать файл:

 MySQL  localhost:33060+ ssl  SQL > select load_file('/tmp/world');
+-------------------------+
| load_file('/tmp/world') |
+-------------------------+
| hello
                  |
+-------------------------+
1 row in set (0.0007 sec)

Но я не могу прочитать каталог:

 MySQL  localhost:33060+ ssl  SQL > select load_file('/tmp');
ERROR: 1085: The file '/tmp' must be in the database directory or be readable by all

Эта ошибка не ясна относительно реальной причины, по которой он не может прочитать файл. Он просто возвращает общую ошибку, соответствующую кодовой константе ER_TEXTFILE_NOT_READABLE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...