打开环境是一个代码审计题目
简单分析就是输入一个变量num,其值不能等于4476与包含字母,但是他的值需要为4476
函数intval作用为获取变量的整数值,第二个参数的意思是进制,默认为10进制。题目参数为0,就根据变量类型进行判别
但是只能识别10,16,8三种类型
由于题目过滤了10进制的4476与16进制的x,我们可以用八进制进行绕过
即010574(0为标识符)
?num=010574
得到flag,此题结束。
打开环境,与上一题类似,但是多了个strpos()函数
因为使用了===(值相同且类型相同),所以8进制数无法判别(因为标识符最左侧为0,所以返回值为0)。我们可以在数字后面加上一个.0来进行绕过
?num=4476.0
得到flag,此题结束。
打开环境,发现过滤了.
于是我们继续从intval函数入手,因为8进制数会被判定为0,但我们可以在前面加上一个+使其不会被误判。
?num=+010574
得到flag,此题结束。
打开容器,是一个传参过滤题
当我们输入flag.php时会被过滤。但是highlight_file函数可以显示文件的内容,所以我们需要输入flag.php
这个时候可以使用相对路径进行绕过
?u=./flag.php
简单的md5碰撞题,使用数组即可绕过
?a[]=1&b[]=2
得到flag,此题结束
这个题目意思是同时获取get和post的传参且get指向post的地址,意思是两者改变其一另一个都会变
于是我们直接使用get,post同时传参即可
?HTTP_FLAG=flag
HTTP_FLAG=flag
得到flag,此题结束
array()函数创建数组
in_array() 函数搜索数组中是否存在指定的值
array_push()函数在数组末尾添加内容
rand(min,max)函数返回一个在min和max区间的随机数字
file_put_content()函数往一个文件中写内容
于是我们可以知道题目写入了一个从1到877的随机数组,并且匹配输入的变量n中是否有其中的数字
这里涉及到一个弱比较,即==。弱比较会根据最前面的字符决定类型
比如1.php会被识别为1
于是我们构造payload
?n=1.php
content=
随后使用蚁剑连接,得到flag,此题结束