web89-web102
1、web89
当进入题目之后,我们看到代码为:
通过分析,我们看到if判断中先判断输入的num之中是否由0-9的数字。因为所用的函数是preg_match所以它存在一个漏洞可以供绕过就是preg_match无法识别数组,所以输入:
?num[]=1
所以在绕过之后即可执行intval($num)判断为真之后输出flag:
2、web90
打开之后我们看到代码段:
代码中通过$_GET函数告诉我们要输入的为’num’通过分析代码可知,如果直接输入num=4476时第一个判断语句会判断为真,然后输出’no no no!‘所以为了绕过则不能直接输入”4476“,但是之后输出结果的判断中又需要num=4476,根据intval()函数的特性可知,此时后面的参数为零,所以是以8进制来判断num中是否有4476,所以此时的选择很多:
?num=4476a
?num=010574
?num=0x117
以上三种均可;
此外,我们通过尝试得知再intval()之中,aeb(a为任意实数,b为任意正整数)会自动归类为a中所包含的数字
eg:4476e10 —>4476
所以从此可知,我们也可以尝试:
?num=4476e10
结果也依旧可以得到flag
3、web91
进入题目之后,我们看到:
preg_match中所限制的文本为php而在php之后的i,m分别代表了限制条件(正则表达式):
所以我们针对两个if判断得到,所以a要为php且第一行不能存在,所以输入时要绕过第一行,所以我们输入:
?cmd=%0aphp
4、web92
见到这种题,我们见到与之前90题类似,但也有不同之处因为此时的4476不在有“ ‘ ”所以此时检索的是是否出现4476这个数字,因此我们不能够继续沿用"4476a"类似的绕过方法来绕过,但可以之前的特殊方法类似采用4476.1
因为intval只能识别整数,所以我们可以代入4476.1、八进制、十六进制的绕过,所以我们可用:
?num=4476.1
?num=010574
?num=0x117c
5、web93
观察代码,我们进行分析:
- num为整数,且数值为4476
- 之后不能够有[a-z]之间的英文字母
- 最后要通过intval为4476
因此,我们对于num的要求为:
首先,必须为4476.
其次,不能够包含英文字母
所以可供选择的绕过的方法并不多,我们可选择:
?num=010574
?num=4476.1
以上这两种。
6、web94
通过分析代码我们看到:
首先,第一个if判断中的num后的4476有引号,所以并不是严格的必须出现整数4476
随后,不能够出现0和英文字母
最后,我们看到有正则表达式i说明限定的英文字母大小写不做限定一律不行,所以最后得出:
?num=4476.0 为合适的解决方法
7、web95
进入题目,我们进行分析,我们见到其他部分基本一致,但遇到了新的函数“strpos()”
strops(a,b)的作用是检查a中的第一个字符是否为b,所以我们要绕过的做法为:
?num= 01054
8、web96
因为$_GET函数中u为变量,所以我们输入u的值,从判断上来看,u并不能输入flag.php,那么,我们要导出flag.php
中的内容,则需要对if判断进行绕过,读取为:./+文件
所以i在此处为:
?u=./flag.php
9、web97
当我们看到代码段时,分析可得,与之前的题目不同,此时的题目中并非是 $_GET函数而是 $_POST函数
因此,我们需要通过Hackbar这个工具来进行POT传参。
之后我们分析代码,md5()函数指的是将其中的内容进行md5加密之后的内容,此时此时我们得知,要求的是a与b
两个变量在md5加密之后要求相同,而我们也可以采用绕过的手法,md5()绕过的输入为:
即:
a[]=1&b[]=2
最终得到flag
10、web98
进入题目中我们看到了代码
我们见到第一个GET后所执行的三元运算,分析得知可知,此时需要同时GET和POST传参,随后,我们我们分析,当GET[flag]==flag时,执行?之后的语句否则执行“ : ”之后的语句。
所以最后我们需要将HTTP_FLAG函数等于’flag’,所以我们只需将POST传参的时候将HTTP_FLAG=flag,所以GET传参时并不需要特意输出特定的字符。
11、web99
查看代码,通过array_push将36到877的数压入数组之中,
通过if判断要使得n与in_array()均为真,所以同时GET和POST因为in_array()是弱比较所以可用“数字+.php"并使用一句话木马绕过
所以在GET传参时输入?n=1.php,POST传参用一句话木马输入content的值,
输入一句话木马
随后可以求得包含flag内容的文件名:
之后我们就可得到:
get传参flag.php我们即可查看flag.php中的内容
12、web100
通过分析代码,我们看涉及v0这个变量时,因为’=‘的运算优先级大于v1,所以v1=v0.
最后我们看if判断得知v2中不能有” ; “,而v3中可以有" ; "。而v2后的ctfshow则是v2中来反映ctfshow中的flag。
所以我们动用var_dump函数进行调取ctfshow中的内容。
v1则只要非空即可。所以最后我们输入:
?v1=1&v2=var_dump($ctfshow)&v3=;
13、web101
在这个题目中,v0与v1依旧是与v1相同,但这一次v2的所有特殊字符被禁止,所以我们要使用ReflectionClass建立ctfshow类的反射类,
所以此时我们输入
?v1=1&v2=echo new Reflection&v3=;
因为没有禁止v3的” ; “所以v3可以使用分号
最后我们可以得到答案: