Easy Calc的wp及目录分隔符(/)的一种少见的绕过姿势
wp:
随便输入后查看源码,发现隐藏网站calc.php:
访问后得到源码:
发现eval函数,明确需要通过它获取flag。这道题的思路很像经典的ping ping的做法,不同就是ping ping是通过系统命令执行(ls /)来获取目录找寻flag,本题是通过eval函数中的echo获取。所以需要使用var_dump(scandir(/))来打印出目录,然后观察到/被过滤了,所以需要绕过。
- 一种方法是使用chr(47),因为chr(47)=" / "
- 另一种是使用DIRECTORY_SEPARATOR:(DIRECTORY_SEPARATOR 是 PHP 中一个定义分隔符常量的内置常量,在不同的操作系统中,用于区分文件路径中的目录分隔符。例如,在 Windows 系统中使用反斜杠 \ 表示目录分隔符,在 Unix/Linux 系统中则使用正斜杠 /。而使用DIRECTORY_SEPARATOR 常量来代替实际的路径分隔符,可以确保不同操作系统下的代码都能正常工作)因此DIRECTORY_SEPARATOR可以替代/,绕过/过滤。
或者:
接着发现f1agg文件,还是利用echo读取f1agg文件。用到file_get_contents(/f1agg),补充下file_get_contents 是 PHP 中用于读取文件内容的函数。它可以从一个文件或网络资源中读取数据,并以字符串形式返回。还是因为/被过滤,同样可以使用两种绕过方法:
或者: