[英]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.