SQL注入之报错注入与宽字节注入

报错注入

**报错注入:**利用报错信息,结合函数规则进行数据读取的一种注入攻击

**使用场景:**没有回显点,但有报错信息时则可以使用报错注入

常用函数一:updatexml() //新xml文档函数

​ 语法:updatexml(目标xml内容,xml文件路径,更新的内容)

实际上这里是去更新了XML文档,但是我们在XML文档路径的位置里面写入了子查询,我们输入特殊字符,因为不符合输入规则故进行了报错

但是报错的时候,它其实已经执行了子查询代码!
在这里插入图片描述


常用函数二:对XML文档进行查询的函数

​ 语法:extractvalue(目标xml文档,xml路径)

第二个参数 xml路径是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。
在这里插入图片描述


宽字节注入

magic_quotes_gpc函数 [PHP5.4及其以上魔术引号是被删除了]

魔术引号函数的作用:当PHP的传参中有特殊字符就会再前面加转义字符’',来做一定的过滤

addslashes()函数

判断解析用户提交的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。

单引号(’)、双引号(”)、反斜线(\)等字符都会被加上反斜线

单引号和双引号内的一切都是字符串,那我们输入的东西如果不能闭合掉单引号和双引号,我们的输入就不会当作代码执行,就无法产生SQL注入,那我们该怎么办?

宽字节注入原理:

1、目前多数网站使用的都为UTF-8编码,如果MySQL数据库的编码设置为GBK编码

此时就会产生宽字节注入攻击

2、UTF-8编码:一个中文字符占三个字节 GBK编码:一个中文字符占两个字节

如何绕过**\ ?
使用: %df’ 或者任意一个中文字符

例如:中’

发现:在URL编码中 \ 为%5C,然后我们会想到传参一个字符想办法凑成一个gbk字符

例如:‘運’字是%df%5c

利用场景

如果网站使用了 addslashes()函数或者开启了魔术单引号,恰巧MYSQL数据库为GBK,就会造成宽字节注入
为GBK编码

此时就会产生宽字节注入攻击

2、UTF-8编码:一个中文字符占三个字节 GBK编码:一个中文字符占两个字节

如何绕过**\ ?
使用: %df’ 或者任意一个中文字符

例如:中’

发现:在URL编码中 \ 为%5C,然后我们会想到传参一个字符想办法凑成一个gbk字符

例如:‘運’字是%df%5c

利用场景

如果网站使用了 addslashes()函数或者开启了魔术单引号,恰巧MYSQL数据库为GBK,就会造成宽字节注入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值