web安全之SQL注入(六)

文中详细讲解web安全之SQL注入,通过文中内容更加深入的掌握SQL注入的原理及检测方法,从而更好的用于渗透测试中;文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。

web安全之SQL注入(六)

宽字节注入

原理

一般情况下开启gpc可以防御很多字符串型的注入,但如果数据库编码不对,同样可以导致SQL防注入绕过,实现注入攻击,当我们数据库编码和php编码设置不同的两种编码时,则就有可能造成宽字节注入,这样就算开启了gpc,也会因为此原因实现逃逸gpc。
要有宽字节注入,首先要首先要满足数据库后端使用双/多字节解析SQL语句,其次还要保证在该种字符集范围中包含低字节位是 0x5C(01011100) 的字符,在我们的Big5和GBK字符集是存在的,但在UTF-8中已经没有这种字符,所以就不存在宽字节注入。

%df%27===(addslashes)===>%df%5c%27===(数据库 GBK)===>

这里我来简单说下上面语句的原理,因为开启了gpc或者addslashes这种转义函数。所以我们输入的单引号,通过中间件进行url编码,就是%27,在加上存在gpc或addslashes转义函数,单引号就会变成反斜杠+单引号,也就是%5c%27,所以当我们在输入时,加上%df时,就会变成%df%5c%27,因为数据库是GBK,所以就会变成中文的運字,而经过转义的反斜杠则不存在,从而实现逃逸gpc或者addslashes转义函数。
在这里插入图片描述

代码分析

从图中就可以看出利用%df%5c%27,变成運,这样我们就可以在后面继续写入我们的SQL注入语句,从而获取敏感信息。
在这里插入图片描述

漏洞演示

首先是检测是否存在宽字节注入。输出%df%27 在配合and1=1来进行检测,或者使用sleep函数。

-1%df%27%20and%201=1--+ #根据页面是否有乱码
-1%df%27%20or%20sleep(10)--+  #根据页面是否有延时

在这里插入图片描述
在这里插入图片描述
当发现存在宽字节注入时,则可以使用常规的注入方式来获取敏感信息。

id=-1%df%27%20union%20select%201,version(),database()--+

在这里插入图片描述
获取表名,字段名也是相同的方法来获取。

id=-1%df%27%20union%20select%201,2,(select group_concat(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=database() limit 1)--+

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全局变量Global

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值