无参数RCE
无参数RCE就类似与在我们经常使用的一句话木马前面,加上了对对参数的过滤,过滤的正则一般类似于这道ctf题目给的这种。
if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp']){
eval($_GET['exp']);
}
[a-z,_]+ : 匹配小写字母和下划线_ 1次或多次
\( : 左括号
(?R) : 代表当前表达式,就是这个(/[a-z,_]+\((?R)?\)/),所以会一直递归
(?R)? : 递归当前表达式0次或1次
// (?R)* : 递归当前表达式0次或多次
\) : 右括号
这个正则只会匹配到
a();
a(b());
a(b(c()