美文网首页
Bugku------代码审计

Bugku------代码审计

作者: yangc随想 | 来源:发表于2018-02-26 00:37 被阅读0次

    新银报到,多多指教,如有错误,多谢指出

    extract变量覆盖

    http://120.24.86.145:9009/1.php

    第一次遇到extract()函数,百度一波含义(回到家后google被ban了):

    @http://www.w3school.com.cn/php/func_array_extract.asp(来自W3school)

    这样就简单了,直接构造payload:?shiyan=&flag,得到flag.

    strcmp比较字符串

    http://120.24.86.145:9009/6.php,题目崩了,flag是第一道题的

    做的时候这道题目崩了,不过既然提到了strcmp,那么一定会用到数组绕过,随便丢了一个a[]进去,flag出来了???

    urldecode二次编码绕过

    http://120.24.86.145:9009/10.php

    百度一波相关函数:

            eregi()函数在一个字符串搜索指定的模式的字符串。搜索不区分大小写。

        这样题目就简单了:

            第一关:id不能等于hackerDJ

            第二关:$_GET[id] = urldecode($_GET[id]);

            第三关 :if($_GET[id] == "hackerDJ")

        这道题很丰富了我的见识,让我感觉到一直以来我对GET函数了解的还不是很深刻。

        刚开始我做这道题的时候,直接将id赋值为hackerDJ的一次url编码,然后扑街了好久,最后多亏了题目的提示二次编码绕过将id赋值为hackerDJ的二次url编码,才得到flag,之后我又对题目进行了分析:

    好题,好题。

    md5()函数

    http://120.24.86.145:9009/18.php

    这道题就是使username!=password    &&    md5(username)===md5(password)

    这样就很简单了,直接将240610708和QNKCDZO分别对上述赋值即可。

    另外一种比较简单的方法就是md5()方法无法处理数组,直接构造payload:   

        username[]=1&password[]=2即可

    数组返回NULL绕过

    http://120.24.86.145:9009/19.php

    遇到 了熟悉的ereg函数,直接用%00截断。

    还有熟悉的strpos函数,直接用数组截断。

    构造如下payload:http://120.24.86.145:9009/19.php?password[]=%00

    sha()函数比较绕过

    http://120.24.86.145:9009/7.php

    比较长的一道题目,emmmmm。

    需要对name和password进行赋值,而且需要他们的值不等,但是sha1的值相等。

    sha1()函数无法处理数组,直接构造如下payload:

            http://120.24.86.145:9009/7.php?name[]=1&password[]=2

    md5加密相等绕过

    http://120.24.86.145:9009/13.php

    这道题上面已经说过了,两个md5加密相等的值为240610708和QNKCDZO,这里需要将a赋值为240610708直接得到flag,payload:

        http://120.24.86.145:9009/13.php?a=240610708

    十六进制与数字比较

    http://120.24.86.145:9009/20.php

    又是一道老长老长的题目,浏览一遍程序,最后需要number==temp是才可以输出flag ,然后我们可以对password赋值,根据题目提示,直接将password赋值为number的十六进制,然后flag出来了??(0x表示16进制)

    payload:http://120.24.86.145:9009/20.php?password=0xdeadc0de

    ereg正则%00截断

    http://120.24.86.145:9009/5.php

    题目需要对password赋值

        关卡1:if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)         %00截断

        关卡2:strlen($_GET['password']) < 8 && $_GET['password'] > 9999999

                 可以用数组绕过,并且这里为&&,前面可以用数组截断(True),后面数组中有字母以及%,无法解析(true)。

        关卡3:strpos ($_GET['password'], '-') !== FALSE)     也可以用数组绕过

        最终我的payload:

                    http://120.24.86.145:9009/5.php?password[]=1%00

    strpos数组绕过

    http://120.24.86.145:9009/15.php

    对ctf进行赋值

        关卡1:if (@ereg ("^[1-9]+$", $_GET['ctf']) === FALSE)    用%00截断

        关卡2:else if (strpos ($_GET['ctf'], '#biubiubiu') !== FALSE) 用数组截断

        最终我的payload:

                    http://120.24.86.145:9009/15.php?ctf[]=1%00

    相关文章

      网友评论

          本文标题:Bugku------代码审计

          本文链接:https://www.haomeiwen.com/subject/mlsdxftx.html