BUUCTF之[RoarCTF 2019]Easy Calc
1.题
2.题样
3.测试,数字,字母:
字母都不能计算:
查看源码,说有WAF,看到提示有一个calc.php文件,访问试试:

访问结果,传参为num,并且有黑名单,过滤了字母t,r,[,]等,基本上一句话是不管用了,数据库查询语句也不香了,select,databases:
有eval()函数,说不定有代码执行漏洞:eval()代码执行漏洞,1,2
num传参测试:
数字:
字母:
查询语句:
很明显字母都被WAF拦截,利用PHP的字符串解析特性绕过waf,PHP字符串解析特性。由于php在解析url中的参数时,保存前会把num前面的空格去掉再解析,所以在num前加空格可绕过WAF,在num前加个空格,弹出之前代码中的提示,只要在黑名单中,都会提示what are you want to do?:
试试phpinfo():
成功执行,PHP函数:
????scandir():以数组形式返回指定目录中的文件和目录
????var_dump():输出变量的相关信息。
????var_dump():显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
????file_get_contents():把整个文件读入一个字符串中。
/在黑名单中,用chr()函数绕过’/'字符,chr(47)
scandir():
var_dump():
var_dump(scandir(chr(47))):
var_dump(file_get_contents(chr(47).f1agg):
var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))):