我使用gzdeflate()打包我的代码后,我执行addslashes()并将其写入文件,如$ var ='MY_RESULT'; 之后我尝试使用eval(stripslashes(gzinflate($ var)))执行它并获取错误警告:gzinflate():此行中的数据错误。如果我设置$ var = addslashes(gzdeflate(“my_original_code”)),一切都很好,但我需要将泄露的结果放在这个变量中。那我的错误在哪里?这是我的代码:
<?php
$source = file_get_contents("source.txt");
$gz = addslashes(gzdeflate($source,9));
$a = "<?php \$var='";
$b = "'; eval(gzinflate(stripslashes(\$var)));";
$result = $a.$gz.$b;
$fp = fopen('result.php', 'wb');
fwrite($fp, $result);
fclose($fp);
答案 0 :(得分:2)
您需要在解码时反转编码步骤的顺序。
编码步骤:
您当前的解码步骤:
显然,这不会奏效。你需要:
简而言之,您需要stripslashes(gzinflate($var))
而不是gzinflate(stripslashes($var))
。
[为什么你要做这一切,并在结果上运行eval()
,我害怕思考,但是你的错误。]