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