0

我正在再次进行实验,现在,我正在尝试这样做:

<script type="text/javascript">
document.write(atob("<?php var_dump(base64_encode(include("index.php")));?>"));
</script>

好吧,问题是输出没有base64编码。如果我尝试:

<script type="text/javascript">
    document.write(atob("<?php base64_encode(var_dump(include("index.php")));?>"));
    </script>

如果我尝试,它会给我同样的回报:

<script type="text/javascript">
        document.write(atob("<?php echo base64_encode(var_dump(include("index.php")));?>"));
        </script>

是不是也一样...

你能帮我吗?十分感谢

4

2 回答 2

2

您想使用var_export而不是var_dump因为var_dump只是转储变量并且不返回任何内容。请参阅两者的文档:

var_dump- http://www.php.net/manual/en/function.var-dump.php

var_export- http://www.php.net/manual/en/function.var-export.php

您的报价也不正确,请尝试以下操作:

<script type="text/javascript">
    document.write(atob("<?php base64_encode(var_export(include('index.php'), true));?>"));
</script>
于 2013-07-20T01:52:55.913 回答
2

您正在编码 的返回值include。不是包含脚本的输出。使用ob_start()和朋友使用输出缓冲区来捕获输出。

注意:这样做看起来像一个糟糕的架构......应该是一个函数,将包含文件的结果作为字符串返回,而不是 ob hack。

于 2013-07-20T01:55:04.500 回答