是否可以使用mysql浏览文件系统中的所有目录?

问题描述 投票:0回答:1

我目前正在研究SQL注入,我想知道是否可以在MySQL中使用SQL注入显示所有目录?我的意思是,我知道,有一个load_file()函数可以显示文件,但是目录(它们的内容)呢?是否需要上传某种外壳程序,还是有更好的解决方案来显示所有内容?

mysql sql linux directory sql-injection
1个回答
0
投票

LOAD_FILE() function将不会读取目录。它仅读取常规文件。

这里是到特定代码行的链接,该行检查您尝试打开的文件是否为常规文件,如果不是,则返回错误。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相对应的一般错误。

© www.soinside.com 2019 - 2024. All rights reserved.