宽字节注入

原理

转义特殊字符('或者“)时,因为宽字节占用的字符长度,可以构造语句,从而消灭掉转义字符斜线/


手工注入

  • sqli_labs 第32关

判断是否有注入点

1.以’构造,看页面是否报错 (假设我是不知道这关是宽字节注入)
以引号构造语句
以引号构造语句,没有报错


以双引号构造语句11
以双引号构造语句,没有报错


这个时候,通过我现在已有的认知我会想是不是被转义了,我会想用宽字节试试
以%df'来构造语句
以%df‘来构造语句,结果报错了,有很大可能存在注入点
补充:’号前的%df并不是非它不可,只要十六进制值大于80(128),就可以被识别为宽字节。

  1. 构造正确的逻辑语句
    正确的逻辑语句
    通过显示查询语句,我们可以看到,程序识别到‘会在’前面加一个转义字符,来破坏掉‘的功能。这本没有问题,问题出在程序采用宽字节我可以构造字符使得和/一起产生一个宽字节字符,破坏了转义字符/

  2. 构造错误的逻辑语句

获取当前表的字段数

猜测值:3
猜测值:3
猜测值:4
猜测值:4
通过3正常显示页面,4页面报错可得出结论:当前表的字段数为3。


获取页面显示位置


通过结果,可知位置2,3会显示数据


显示数据库

显示数据库
我们选择 security数据库


显示数据表

显示数据表
我们选择users 这张表


显示表中的字段

显示users表中的字段,因’过滤原因未成功
通过结果我们发现是’号被过滤了,所以我们需要将表名users转换为hex编码
显示users表中的字段


显示字段中的数据

显示字段中的数据
显示字段中的数据
通过BurpSuite辅助我们获取数据
通过BurpSuite辅助我们获取数据

原文地址:https://www.cnblogs.com/ceiling-/p/14878138.html