php特性

Web-89

image-20220510185418585

利用数组绕过正则表达式

输入:?num[]=

image-20220510192049740

Web-90

image-20220510193518630

这题不能输入等于4476,但需要提交一个字符串——int值输出为4476

输入:?num=0x117c      //后面的数字将被以十进制的形式读取
     ?num==010574      //后面的数字将被以八进制的形式读取

image-20220510195127879

注意

  • 如果字符串包括了 “0x” (或 “0X”) 的前缀,使用 16 进制 (hex);否则,
  • 如果字符串以 “0” 开始,使用 8 进制(octal);否则,
  • 将使用 10 进制 (decimal)。

Web-91

image-20220510201537182

输入:?cmd=%0aphp

因为 %0a 表示换行,那么匹配会自动跳到第二行,发现存在php,就继续执行下一个正则表达式,但是下一个正则不能m了,所以就没检测到php,就执行else语句,显示flag

Web-92

image-20220511210119565这一题好像跟Web-90也没啥差别嘛

输入:?num=0x117c

image-20220511210418974

Web-93

image-20220511212150139

条件:1.数字不能为4476 2.不能有小写字母 3.进制转换后要是4476

先尝试:?num=0X117C        //没成功
输入:  ?num=_10574        //八进制   回显0
        ?num=010574       //成功

image-20220511220727610

原理是之前说过的那个—— intval($num,0):如果字符串以 “0” 开始,使用 8 进制(octal)

Web-94

image-20220511221115279

一样先看看题,条件:1.不能为4476 2.不能为小写字母 3.需要有0

这里出现了一个新函数,了解一下

image-20220511221306680

strpos()函数查找字符串在另一字符串中第一次出现的位置并返回

这题还是可以用八进制,但是八进制需要开头指定为0,而strpos()会匹配到数字0返回0,!0也就是1从而执行死亡函数,所以我们可以在八进制前面加一个空格

?num= 010574

image-20220511223149178

Web-95

image-20220511224100712

这题多过滤了.号,其他条件不变,上题没有用到.,所以直接用上题的payload也行

Web-96

image-20220511224342019

这里的单引号很瞩目,感觉跟字符串有关

输入?u=1 试试看 

image-20220511224550597

报错里面爆出了绝对路径,突然想到敏感信息泄露哈哈哈哈(虽然跟这题没什么关系),那么flag应该也就在这里面了

输入:?u=/var/www/html/flag.php

也可以用php伪协议来

?u=php://filter/resource=flag.php       //不要写成read了哈哈哈

image-20220511230600065

Web-97

image-20220511231146007

因为是弱类型比较,所以可以直接数组绕过,反正输出结果都是null

输入:a[]=1&b[]=2

Web-98

image-20220512160049405

这一题考到了

三元运算符的知识,就相当于简洁化后的if..else语句

传值引用的知识,前面有&的$参数,属于引用对象,会改变输出的值

image-20220513143414884

$_GET=&$_POST;     //只要有输入的get参数就将get方法改变为post方法(修改了get方法的地址)

中间的代码没有作用,因为我们不提交 flag 参数

看了一个大佬对语句的解释,浅浅py一下~

image-20220513144555651

Web-99

image-20220513180054508

浅浅分析一下

$allow = array();                 
//定义一个空数组
array_push($allow, rand(1,$i));      
//对空数组进行填充
if(isset($_GET['n']) && in_array($_GET['n'], $allow))
//如果get一个n参数并且数组里存在(in_array)这个n
file_put_contents($_GET['n'], $_POST['content']);
//就会把n作为文件名,content作为内容写入当前文件夹

image-20220513235656725

先传一个马上去

image-20220513235743882

访问一下,写进去辣

image-20220515152719598

再去蚁剑连一下

image-20220515152835825

okkk