伪协议读取next.php源码
preg_replace() /e代码执行漏洞_preg_replace /e-CSDN博客
查找资料我们发现,在php5.6及以下版本中,/e使得preg_replace的第二个参数可以被当作php代码执行,第二个参数中\\1指的是正则匹配到的第一组文本,是定死的,所以我们可以考虑第一个参数使用.*匹配任意文本,第三个参数${getFlag()},从而让第二个参数的值取得${getFlag()}并执行getFlag()函数
通过下面的foreach循环,re为get变量的键,str为get变量的值,故可构造
.*=${getFlag()}
从而实现执行getFlag中的一句话木马
但是“.”不能作为首字符,故改用/S匹配任意非空白字符
这里${}的作用是变量替换,实现先执行表达式并将其作为变量的值的效果