PHP将输入传递到加密的PHP文件(ioncube)

PHP将输入传递到加密的PHP文件(ioncube),php,Php,我有一个加密的(ioncube)PHP文件,无法修改,因为我没有原始源代码。我必须运行那个文件才能完成任务。输入是XML类型的post请求 我可以用 ob_start(); include("encoded.php"); $output = ob_get_contents(); ob_end_clean(); 捕获输出,但我不知道如何操作输入XML 我目前正在使用CURL做一篇本地主机文章 private static function post($xml) { $ch = curl_

我有一个加密的(ioncube)PHP文件,无法修改,因为我没有原始源代码。我必须运行那个文件才能完成任务。输入是XML类型的post请求

我可以用

ob_start();
include("encoded.php");
$output = ob_get_contents();
ob_end_clean();
捕获输出,但我不知道如何操作输入XML

我目前正在使用CURL做一篇本地主机文章

private static function post($xml)
{
    $ch = curl_init();

    curl_setopt_array($ch, array(
        CURLOPT_URL             => self::$site,
        CURLOPT_PORT            => 443,
        CURLOPT_HTTPHEADER      => array(
                                    "Content-type: text/xml",
                                    "Content-length: ".strlen($xml),
                                    "Connection: close"),
        CURLOPT_POSTFIELDS      => $xml,
        CURLOPT_POST            => true,
        CURLOPT_RETURNTRANSFER  => true,
        CURLOPT_HTTPAUTH        => CURLAUTH_BASIC,
        CURLOPT_TIMEOUT         => 10,
        CURLOPT_SSL_VERIFYPEER  => 0,
        CURLOPT_SSL_VERIFYHOST  => 0,
        CURLOPT_FORBID_REUSE    => 0,
        CURLOPT_FRESH_CONNECT   => 1
    ));

    $data = curl_exec($ch);

    if (curl_errno($ch))
        $data = "ERROR:".curl_errno($ch);

    curl_close($ch);

    return $data;
}
此代码适用于少数连接,但当大量用户(100到500)尝试调用此代码时,加密的php开始返回wierd数据(空或非XML返回)


所以问题是:我怎样才能伪造一个php://input 使用ob_start时流?或者调用ioncube php文件而不对其进行解密的任何其他解决方案?

因为您通过
调用ioncube文件,包括以下内容:

ob_start();
include("encoded.php");
$output = ob_get_contents();
ob_end_clean();
ob_start();
$_POST['some_key1'] = 'some_value1';
$_POST['some_key2'] = 'some_value2';
include("encoded.php");
$output = ob_get_contents();
ob_end_clean();
您只需强制发布所需的任何
$\u数据,如下所示:

ob_start();
include("encoded.php");
$output = ob_get_contents();
ob_end_clean();
ob_start();
$_POST['some_key1'] = 'some_value1';
$_POST['some_key2'] = 'some_value2';
include("encoded.php");
$output = ob_get_contents();
ob_end_clean();

由于您通过
include
文件调用ioncube文件,如下所示:

ob_start();
include("encoded.php");
$output = ob_get_contents();
ob_end_clean();
ob_start();
$_POST['some_key1'] = 'some_value1';
$_POST['some_key2'] = 'some_value2';
include("encoded.php");
$output = ob_get_contents();
ob_end_clean();
您只需强制发布所需的任何
$\u数据,如下所示:

ob_start();
include("encoded.php");
$output = ob_get_contents();
ob_end_clean();
ob_start();
$_POST['some_key1'] = 'some_value1';
$_POST['some_key2'] = 'some_value2';
include("encoded.php");
$output = ob_get_contents();
ob_end_clean();

你想模拟100-500个同时的用户请求吗?@MonkeyZeus如果你的意思是模拟500个对一个文件的请求,那么我的答案是否定的,我已经有那么多流量了,我正在寻找一种方法来加载一个带有POST请求的ioncube加密文件(或“伪造”POST请求),因为我现在使用的curl不是资源友好型的,而且失败了很多次,但是因为我无法直接访问代码,我没有其他选择…我明白了,请看我的答案。你想模拟100-500个同时的用户请求吗?@MonkeyZeus如果你是说模拟500个请求到一个文件,那么我的答案是否定的,我已经有那么多流量了,我正在寻找一种方法来加载一个带有POST请求的ioncube加密文件(或“伪造”POST请求),因为我现在使用的curl对资源不友好并且失败了很多次,但是因为我无法直接访问代码,我没有其他选择……我明白了,请看我的答案。我将加密的php文件替换为另一个将$\u POST写入日志文件的文件,以检查需要覆盖的$\u POST,但是$\u POST是空的,但是php://input 包含输入XML,是否知道如何“覆盖”php://input 流动使用此代码将$\u POST写入文件:
file\u put\u内容(“test.log”、print\r($\u POST,true)、file\u APPEND)
我将加密的php文件替换为另一个文件,该文件将$\u POST写入日志文件以检查需要覆盖的$\u POST,但是$\u POST是空的,但是php://input 包含输入XML,是否知道如何“覆盖”php://input 流动使用此代码将$\u POST写入文件:
file\u put\u内容(“test.log”、print\r($\u POST,true)、file\u APPEND)