先看到第一个if
要求写个句子
用data伪协议来写
?text=data:text/plain,I have a dream
包含一下next.php
file=php://filter/read=convert.base64-encode/resource=next.php
next.php源码如下
很明显要我们绕过那个正则匹配,
然后执行eval()函数
而我们要执行eval()函数,就是要通过getFlag()这个函数,而怎么取调用呢?
把那个正则匹配表达式往上面一搜
/e模式的漏洞~
文章里提到
如果直接传.*由于php字符解析 .会被替代成下划线
所以我们换个元字符\S
\S表示匹配非空格以外的所有字符
这也我们就能够匹配我们想要的命令执行函数了
\S*=${phpinfo()}
将上面输入会将phpinfo()当做php代码执行
那这题目做法就出来了
通过上述式子调用getFlag()函数,然后RCE
成功
接着找flag
查看根目录下的flag即可