算是一种特殊的绕过方式,套娃形式,数学函数的理解,不过未限制长度。
if(isset($_GET['exp'])){ if (!preg_match('/data://|filter://|php://|phar:///i', $_GET['exp'])) { if(';' === preg_replace('/[a-z,_]+((?R)?)/', NULL, $_GET['exp'])) { if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) { eval($_GET['exp']); } } } } //最后一行过滤了许多函数,包括getcwd(), 1234567891011121314
?R:重复整个正则匹配。其中?引用是可选项,匹配成功后用NULL替换。
就是类似这样的形式:a(b());
最后一行正则则将许多函数禁用掉了,包括getcwd(),getenv()函数等等。
我们知道,print_r(scandir(’.’));可以用来查看当前目录所有文件名,但参数“.”需要构造。
一、遍历:
1、用到的函数:
getcwd():返回当前目录的绝对路径------返回路径 scandir() :列出指定路径中的文件和目录,返回的是数组!-----利用路径(目录) print_r() :以易于理解的格式打印变量-----输出 (1) print_r(scandir('.')12345