寒假培训第二周

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

观察代码,我们进行分析:
在这里插入图片描述

  1. num为整数,且数值为4476
  2. 之后不能够有[a-z]之间的英文字母
  3. 最后要通过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可以使用分号
最后我们可以得到答案:
在这里插入图片描述
在这里插入图片描述

  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值