Mysql使用load_file出现NULL解决

0x00

首先声明采用的Ubuntu与mysql环境为5.7.26-0ubuntu0.16.04.1

0x01

今天在练习AWD加固时,偶然进入mysql后,使用select load_file('/flag');竟然显示NULL,空值。但是当我换成select load_file('/etc/passwd');竟然显示正常,很奇怪的好叭。所以就疯狂百度最终解决了这个问题

0x02

那么首先就需要使用:show variables like '%secure%';。去查看一下secure-file-priv的当前值。如果是下列的情况则表示正常:

 如果不是上述情况,secure_file_priv的值是路径,那么可以自行百度去修改即可。一般而言配置文件的位置如下:

但是总有那么几个例外 ,如果解决不了的话,或者说没有找到相关配置文件(比如我这个环境)。就请到这个目录去修改配置文件:/etc/mysq/mysql.conf.d

然后将secure-file-priv的值变为空,这里直接在[mysqld]中添加“secure-file-priv=”。即可(无需输入其他,直接等于就好)

如果你是其他的环境,不是同一个文件也没有关系。只需要添加secure-file-priv为空即可。然后重启mysql,我使用的命令是/etc/init.d/mysql restart(或者service mysqld restart、service mysql restart、systemctl restart mysqld.service等等,反正重启就行)。这个时候再去尝试是否能读取。如果还是不能读取,这里就需要禁用AppArmor for mysql(相关链接:https://www.cyberciti.biz/faq/ubuntu-linux-howto-disable-apparmor-commands/):

sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld

使用完之后,用命令sudo aa-status查看下是否禁用了mysql保护:

如果想要开启保护,输入下面的命令(这里我就不开启了):

sudo rm /etc/apparmor.d/disable/usr.sbin.mysqld
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld

这个时候再去查看,发现就可以成功了。

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值