我有一个加密的(ioncube)PHP文件,我无法修改,因为我没有原始源代码。我必须运行该文件才能完成任务。输入是在XML类型的post请求中。PHP将加密的php文件传入输入(ioncube)
我可以使用
ob_start();
include("encoded.php");
$output = ob_get_contents();
ob_end_clean();
赶输出,但我不知道如何操作输入XML。目前我使用的卷曲做一个本地主机后
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文件而不解密它?
您是否想要模仿100-500同时用户请求? – MonkeyZeus
@MonkeyZeus如果你的意思是模拟500个请求到一个文件,那么我的答案是否定的,我已经有这么多的流量,我正在寻找一种方法来加载一个带有POST请求的ioncube加密文件(或者“伪造”因为我现在使用的卷曲不是资源友好的,并且失败很多次,但是因为我无法直接访问代码,所以我没有其他选择... – BlackSun
我明白了,请参阅我的答案。 – MonkeyZeus