[BJDCTF2020]ZJCTF,不过如此
先是一个代码审计和之前一个反序列化题目很像,就是一个伪协议的利用
构造payload:
1 | ?text=data:text/plain,I have a dream&file=php://filter/read=convert.base64-encode/resource=next.php |
得到源码:
1 |
|
然后这里涉及到preg_replace() /e模式的漏洞 将用于替换的部分当作php代码执行 参考:https://xz.aliyun.com/t/2557
这里\\1
其实就是 \1
第一个 \
用于转义了 那么结果就是\1
在这里是反向引用 由于我这里没搞太明白
这类题直接用模板答案就行\S*=${命令执行}
大佬总结的很全
思路就是调用getFlag()函数 然后cmd= 命令执行
/next.php?\S*=${getFlag()}&cmd=system('cat /flag');
注意是在next.php 下提交get传参
这里foreach搭配$_GET
有特殊的用法 注意这里不是$_GET[]
本地搭了一个环境测试了一下
简单说就是形如a=b的形式变量名和值分成两个变量来使用 蛮神奇的