PHP无参数读文件和RCE总结

首发于合天智汇:http://www.heetian.com/info/827

http://www.heetian.com/info/827

文章目录:

● 引言

● 代码解析

● 无参数任意文件读取

● 查看当前目录文件名

● 读取当前目录文件

● 查看上一级目录文件名

● 读取上级目录文件

● 查看和读取多层上级路径的就不写了,一样的方式套娃就行

● 无参数命令执行(RCE)

● getallheaders()&apache_request_headers()

● get_defined_vars()

● session_id()

● getenv()

● 小结

● 参考

无参数读文件和RCE总结

例题:

<?php
highlight_file(__FILE__);
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) {    
    eval($_GET['code']);
}
?>

代码解析

preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])

这里使用preg_replace替换匹配到的字符为空,\w匹配字母、数字和下划线,等价于 [^A-Za-z0-9_],然后(?R)? 这个意思为递归整个匹配模式

所以正则的含义就是匹配无参数的函数,内部可以无限嵌套相同的模式(无参数函数),将匹配的替换为空,判断剩下的是否只有;

举个例子:

a(b(c()));可以使用,但是a('b')或者a('b','c')这种含有参数的都不能使用

所以我们要使用无参数的函数进行文件读取或者命令执行

...

完整内容请前往合天智汇查看:http://www.heetian.com/info/827

posted @ 2020-07-07 09:36  Leonsec  阅读(387)  评论(0编辑  收藏  举报