条件:
1.已知对应站点的绝对路径
2.File_priv
开关需要是打开状态
select file_priv from mysql.user;
3.secure_file_priv 不为null
-
设置为空,对所有路径均可进行导入导出。
-
设置为一个目录名字,只允许在该路径下导入导出。
-
设置为Null,禁止所有导入导出。
默认是NULL,可以通过my.conf文件mysqld一栏里进行配置,配置完成后,重启便会生效。
在末尾加上:secure_file_priv=
select @@global.secure_file_priv;
但是改完之后,显示的值还是null
复现
后面就是文件上传了
SELECT “123” INTO OUTFILE “c:/123.txt";
要使用联合查询写文件,不能使用and或者or拼接写文件
http://172.16.11.222/sqli-labs/Less-7/?id=-1')) union select 1,2,"<?php phpinfo();?>" into outfile "C:/cmd.php" --+
上传成功
phpinfo文件上传漏洞
在给PHP发送POST数据包时,如果数据包里包含文件区块,无论访问的代码中是否有处理文件上传的逻辑,php都会将这个文件保存成一个临时文件(通常是/tmp/php[6个随机字符]),这个临时文件在请求结束后就会被删除,同时,phpinfo页面会将当前请求上下文中所有变量都打印出来。但是文件包含漏洞和phpinfo页面通常是两个页面,理论上我们需要先发送数据包给phpinfo页面,然后从返回页面中匹配出临时文件名,将这个文件名发送给文件包含漏洞页面。
因为在第一个请求结束时,临时文件就会被删除,第二个请求就无法进行包含。
但是这并不代表我们没有办法去利用这点上传恶意文件,只要发送足够多的数据,让页面还未反应过来,就上传我们的恶意文件,然后文件包含.
关于利用phpinfo文件上传:https://www.adminxe.com/1083.html