我正在做一个实验,现在,我正在尝试这样做:
<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>
也一样......
你能帮助我吗?非常感谢你答案 0 :(得分: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>
答案 1 :(得分:2)
您正在编码include
的返回值。不是包含脚本的输出。使用ob_start()和朋友的输出缓冲区来捕获输出。
介意:这样做看起来像一个糟糕的架构......应该是一个函数,将包含文件的结果作为字符串返回,没有任何麻烦。