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



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

LOAD_FILE(( 函数不会读取目录。它只读取常规文件。

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

最新更新