关于mysql注入时,无法读取写入文件或者读取文件为null的原因分析

问题情景

我在进行MySQL注入时,发现无法使用load_file()和into file()等文件操作的函数。如果使用会一直报错。或者返回的值为null。

问题背景

MySQL5.7版本

phpstudy集群环境

原因分析

由于这种操控文件的函数可能会让攻击者利用从而对系统造成极大的破坏,所以MySQL通常是默认禁止使用这类函数的。如果想要使用,则需要手动配置。

判断是否MySQL禁用

用数据库,或者是注入点输入

show variables like '%secure%';

从返回值的secure_file_priv中观察

如果是null说明禁用,可以通过下面方法开启

如果有路径,则文件只能在指定的路径中进行修改.

解决过程分为几个方面

1.手动配置一个叫my.ini的文件,位置在phpstudy_pro\Extensions\MySQL5.7.26。

打开之后加上一句

关于mysql注入时,无法读取写入文件或者读取文件为null的原因分析_第1张图片

后面的‘’内为可以进行文件操作的范围,可以写绝对路径,或者空着或者我这样

空着代表可以全区域进行文件操作-----------很危险

‘/’代表只能在本盘进行操作

修改后重启MySQL就可以使用了

2.进行文件读取和写入时,我们直接复制的路径通常是用\,但是\可能会编译成空格等,所以把\全部换成/

3.如果小皮安装在了c盘,可能是没有管理员权限写不进去。(我把他从c盘搬了出来,没放回去实验,所以本条仅供参考)

4.数据库用户权限问题,有的数据库用户没这个权限,一般root绝对有权限

总结

通过以上方法,再检查自己的语句是否正确,基本上就可以解决相应的问题了。

你可能感兴趣的:(网络安全遇到过的坑总结,mysql,数据库,web安全)