宽字节注入
当某字符的大小为两个字节时,被称为宽字节。
宽字节注入是利用数据库在处理GBK等宽字节编码时的特性,通过特定的输入绕过过滤。
当发现网站对敏感字符进行转义过滤,且数据库使用的是gbk编码
GBK双字节编码:一个汉字用两个字节表示,首字节对应0x81-0xFE,尾字节对应0x40-0xFE(除0x7F),刚好覆盖了转义符号\
对应的编码0x5C
。0xDF0x5c
对应汉字“運”,URL编码用%加字符
的16进制编码表示字符,于是%df%5c
经过GBK解码后变为汉字“運”
base64编码
判断特征:以 %3D 结尾
Base64编码使用64个字符(包括大小写字母A-Z、a-z、数字0-9、加号“+”和斜杠“/”,以及在编码结束时用作填充的等号“=”)来表示二进制数据。
%3D
URL解码后为=
,且Base64编码的特征为以=
结束。
cookie注入
注入点在cookie数据中
使用BurpSuite修改cookie中键值对的value值
User-Agent注入
注入点在USer-Agent
使用BurpSuite修改USer-Agent的值
Referer注入
注入点在referer
Referer: allen' and extractvalue(1,concat(0x5e,database(),0x5e)) and '1
mysql> select 'allen' and '1';
+-----------------+
| 'allen' and '1' |
+-----------------+
| 0 |
+-----------------+
1 row in set, 1 waring (0.00 sec)
mysql> select 'allen' and extractvalue(1,concat(0x5e,database(),0x5e)) and '1';
ERROR 1105 (HY000): XPATH syntax error: '^security'
读取文件
利用SQL注入漏洞进行文件读取
load_file(path) #path是文件绝对路径,可以完成文件内容的读取。
前提
-
MySQL的配置文件
mysql.ini
中secure_file_priv
配置;参数 含义 secure_file_priv=NULL 限制mysqld不允许导入导出(读写)操作 secure_file_priv=‘c:/a/’ 限制mysqld的导入导出操作在某个固定目录(c:/a/)下,并且子目录有效 secure_file_priv= 不对mysqld的导入导出操作做限制 -
当前用户是否具有文件读写操作权限;
# root@localhost select file_priv from mysql.user where user='root' and host='localhost';
-
知道读取文件的绝对路径。
联合查询&读取文件
- 写入的文件路径为物理绝对路径,并且需要使用
/
来进行目录拼接 - 需要使用联合查询注入的页面显示位来完成文件内容读取
读取php脚本文件
- 使用联合查询注入的页面显示位来读取php脚本文件
- 由于读取的内容是php代码,浏览器认为它是网页源码的一部分而只在源码中显示,前端页面不显示是因为php代码的解析器只在服务器端
读取其他后缀的文本文件
读取文件内容的其他后缀我呢间的效果和直接读取txt文本我呢间一样
报错注入&读取文件
- 报错注入也需要用到页面显示位来读取文件内容
- 由于报错的信息有长度限制,每次只显示32位字符,所以需要结合
substr函数
进行截断读取
and updatexml(1,substr(load_file('path'),1,10),3) --+
文件写入
利用SQL注入漏洞进行文件写入
select a,b,c into outfile "path" #a,b,c为写入的内容,path是文件绝对路径
前提
-
MySQL的配置文件
mysql.ini
中secure_file_priv
配置;参数 含义 secure_file_priv=NULL 限制mysqld不允许导入导出(读写)操作 secure_file_priv=‘c:/a/’ 限制mysqld的导入导出操作在某个固定目录(c:/a/)下,并且子目录有效 secure_file_priv= 不对mysqld的导入导出操作做限制 -
当前用户是否具有文件读写操作权限;
# root@localhost select file_priv from mysql.user where user='root' and host='localhost';
-
文件写入不能覆盖服务器上已有同名文件。
当前文件所在位置
mysql> select @@datadir;
+-------------------------+
| @@datadir |
+-------------------------+
| E:\phpStudy\MySQL\data\ |
+-------------------------+
1 row in set (0.00 sec)
联合查询&写入文件
- 利用‘’空字符作为占列位。
- 所有的列都可以用来放置写入的文件内容,不一定非要页面显示位。
标签:文件,secure,读取,priv,file,SQL,其他,注入 From: https://www.cnblogs.com/yxrd/p/18526407报错注入无法进行写入操作