fileclude-wp以及新知识

新知识

/var/www/html/ —-Web服务器的默认根文件夹    非常的骚气,下面会出现做这个题有个疑问,resource到底要不要加这个默认根本文件夹,并做了实验。

PHP有很多内置 URL风格的封装协议,这类协议与fopen()、 copy()、 file_exists()和filesize()的文件系统函数所提供的功能类似。

convert.base64encode:这样做可以把指定php文件的源码以base64方式编码并被显示出来

php伪协议

php://input  伪协议利用php中流的概念,将原本的include的文件流重定向到了用户可控制的输入流中命令执行(allow_url_include:on,allow_url_fopen不做要求)

php://filter 伪协议读取文件(allow_url_include和allow_url_fopen都不做要求)

其余不需要改通过指定末尾的文件,可以读取经base64编码后的文件源码,之后再base64解码一下就行。虽然不能直接获取到shell等,但能读取敏感文件危害也是挺大的。

isset() 函数

用于检测变量是否已设置并且非 NULL。如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE。

die() 函数

die() 函数输出一条消息,并退出当前脚本。该函数是 exit() 函数的别名。

include 实例

例子 

假设我们有一个名为 “footer.php” 的标准的页脚文件,就像这样:

<?php
echo "<p>Copyright © 2006-" . date("Y") . " W3School.com.cn</p>";
?>

如需在一张页面中引用这个页脚文件,请使用 include 语句:

<html><body><h1>欢迎访问我们的首页!</h1><p>一段文本。</p><p>一段文本。</p><?php include 'footer.php';?></body></html>

题目

php-wp

看见这个题,第一行就告诉我们包含flag文件,看条件,要两个文件都有参数,然后文件二的内容是”hello ctf”,这个时候把文件1执行。

解题思路:让文件1执行php://filter 伪协议 读取经base64编码后的flag.php文件源码,然后让文件2用php://input  伪协议 输入hello ctf   然后返回flag.php base64编码 之后解密。

访问靶机地址

61.147.171.105:51292/file1=php://filter/read=convert.base64encode/resource=flag.php&file2=php://input

让文件1得到flag.php的64编码 ,并让文件2 等待输入。

我用的是bp抓个包 ,用其他抓包也行,记得改post 为hello ctf

然后发送 右下角返回了flag.php的base64编码,PD9waHAKZWNobyAiV1JPTkcgV0FZISI7Ci8vICRmbGFnID0gY3liZXJwZWFjZXsxYmIwNzI3ZjExNzg4ZWUyMTczOWUwZDQ0Mzc0NmFmMn0=

bp1

把这串密文扔进base64解密得到 源码 ,源码中就有flag。

jiema

疑问

/var/www/html 是Web服务器的默认根文件夹 ,那么在寻找目标文件的时候用不用加这个路径? 当时有这个疑问,然后用bp抓了两次包,一次加上这个路径,一次没加,最后发现都可以。我猜想他是个默认路径,你加不加都可以,下面附上加路径上的抓包,上面那个是没加路径的

bp2

© 版权声明
THE END
喜欢就支持一下吧
点赞16 分享
评论 抢沙发

请登录后发表评论