简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)

1、宽字节注入

sqllabs-less-32为例

使用单引号进行测试

提示我们输入的单引号被转义符 \ 进行了转义,即转义符自动的出现在输入的特殊字符前面,这是防止sql注入的一种方法,导致无法产生报错。

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)_第1张图片

这种情况我们就可以尝试宽字节注入,后面加上 %df'

由于输入的特殊字符会自动被添加转义符 \ ,其中 \ 的十六进制是%5c,mysql的GBK编码会认为%df%5c是一个宽字节,也就是'運',从而使单引号闭合(逃逸),进行注入攻击。

payload:

?id=1%df'

出现了报错和乱码

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)_第2张图片

接下来我们就可以在上述payload的基础上进行注入

判断字段数

?id=1%df' order by 3 --+

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)_第3张图片

?id=1%df' order by 4 --+

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)_第4张图片

说明只有三列

进行相关查询即可

(注意要使用-1使前面查询不成立,如果你还是用一个存在的id那么回显就是对应id用户的内容)

?id=-1%df' union select 1,database(),user() --+

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)_第5张图片

2、httpXFF头注入

HTTP XFF头注入(X-Forwarded-For Injection),攻击者在HTTP请求中伪造XFF头,将恶意代码注入到HTTP请求头中,从而执行SQL注入攻击。

XFF属于header的一种

HTTP Header注入的前提条件:

  1. 能够对请求头消息进行修改

  2. 修改的请求头信息能够带入数据库执行

  3. 数据库没有对输入的请求头做过

常见的HTTP Header注入类型:

  1. Cookie注入:服务器对cookie字段进行获取,以验证客户端的身份。

  2. Referer注入:服务器记录referer字段用于统计网站的点击量。

  3. User-Agent注入:服务器记录访问者的浏览器操作系统版本。

  4. XFF注入:记录客户端的真实IP,然后写入数据库

这里以sqllabs-less-18为例

由于我之前修改了admin的密码,为12345

我们使用admin这个账户进行登录

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)_第6张图片

登陆成功后回显了User Agent 的相关信息

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)_第7张图片

我们使用burpsuite进行抓包拦截

对其 User Agent 进行修改

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)_第8张图片

使用单引号尝试闭合,出现SQL语句报错,因此确实存在注入

并且观察报错内容,这里我们除了闭合单引号,还有一个括号也需要闭合

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)_第9张图片

User-Agent: 1')#

没有出现sql语句报错说明闭合成功 

但是报错列数不匹配

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)_第10张图片

经过尝试得到有三列,这里的难点还是要闭合括号,并使用#注释掉后面的内容

User-Agent: 1',2,3)#

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)_第11张图片因为这里并没有看到关于我们输入的1,2,3的回显位置,因此采用报错注入。

这里演示使用extractvalue函数爆数据库名

User-Agent: 1',extractvalue(1,concat(0x7e,(select database()))),3)#

简单了解SQL宽字节注入与httpXFF头注入(基于sqllabs演示)_第12张图片

关于爆其他内容可以参考我之前的博客关于SQL报错注入的相关内容。

至此,关于SQL注入的内容全部结束,后续我们将进入其他Web漏洞的学习。

期待大家的关注与支持!

你可能感兴趣的:(SQL,web,sql,数据库,web,web安全,mysql)