簡體   English   中英

PHP將輸入傳遞給加密的php文件(ioncube)

[英]PHP passing input to encrypted php file (ioncube)

我有一個加密的(ioncube)PHP文件,我無法修改,因為我沒有原始來源。 我必須運行該文件才能完成任務。 輸入采用XML類型的post請求。

我可以用

ob_start();
include("encoded.php");
$output = ob_get_contents();
ob_end_clean();

捕獲輸出,但我不知道如何操作輸入XML。

我目前正在使用CURL來做一個localhost帖子

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開始返回奇怪的數據(空或非XML返回)。

所以問題是:在使用ob_start時如何偽造php://輸入流? 或者任何其他解決方案調用ioncube php文件而不解密它?

由於您通過include文件調用ioncube文件,如下所示:

ob_start();
include("encoded.php");
$output = ob_get_contents();
ob_end_clean();

你可以簡單地強制你需要的任何$_POST數據,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM