打开该靶机,发现为一个计算器
尝试写一个xss的payload测试一下
再尝试一下SQL注入
两次尝试都不行,该网页应该存在waf,查看该网页的源代码
发现有一个网页,访问一下该网页
发现为网页所过滤的一些规则,而且该网页应该是由calc.php对其进行传参
尝试看一下该网页有没有phpinfo页面
报了个403的错误,服务器上文件或目录拒绝访问
应该存在waf,尝试绕过一下waf,这里有两种绕过waf的方法
在num前添加%20(空格)绕过对num的检测
HTTP走私之重复Content-Length绕过
查看一下disable_functions,看看禁用哪些函数
虽然很多函数都用不了了,但是还有个scandir()函数可以用
但是又因为waf存在,使很多字符都无法使用,这里百度了一下(看了一下大佬的wp),我们可以利用chr函数对其进行绕过,但是在php里我们不能直接输出,要用var_dump或者print_r,这两个函数都可以把flag打印出来,print_r和var_dump都能输出数组和对象,但print_r对布尔型的输出不太明显;var_dump输出比较详细,一般调试时用得比较多
构造payload
/calc.php?%20num=var_dump(scandir(chr(47)))
在这里看到了f1agg,应该为本题的flag所在
利用file_get_contents()进行读取
/calc.php?%20num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
得到该题的flag
flag{208301f8-9995-4bce-905c-150c1a94dcb2}