前言

在本地跑起来一堆问题。

过程

设置环境变量

COMPOSER_PATH=C:\Users\24217\AppData\Local\ComposerSetup\bin\composer.phar

PHP环境变量一般安装都自带了。

添加异常处理,不然运行会直接oserror退出了

        try:
            if self._try_run_command(php_file):
                return (php_file,)
        except OSError:
            if path.exists() and self._try_run_command(self._php_path, php_file):
                return (self._php_path, php_file)
        

这里可以加一个print,方便调试。

    def _run(self, *args):
        """Runs a program with given arguments."""
        print("this is args:")
        print(args)
        return subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

test_payload.php,给第一个参数PHP_BINARY加一下引号,不然路径中如果有空格会报错。

$output = shell_exec(
            '"'.PHP_BINARY.'"' . ' ' .
            escapeshellarg(DIR_LIB . '/test_payload.php') . ' ' .
            escapeshellarg($vector) . ' ' .
            escapeshellarg(base64_encode($payload))
        );

测试时,有时候,包下载不下来,难搞。

使用monolog测试就可以正常

& "D:/Program Files (x86)/Python/python.exe" d:/git_proj/phpggc/test-gc-compatibility.py monolog/monolog:2.3.0 monolog/rce1 monolog/rce3

但是使用laravel时,package就显示KO,。。。

& "D:/Program Files (x86)/Python/python.exe" d:/git_proj/phpggc/test-gc-compatibility.py laravel/laravel:5.4.0 Laravel/RCE9

感觉本地环境有点不太好弄,项目也提供有docker,用docker试试。

docker安装也有问题,靠,不搞了🙁