Bugku------代码审计

2018-02-26  本文已影响0人  yangc随想

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

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

上一篇下一篇

猜你喜欢

热点阅读