PHP文件包含漏洞)
摘要本篇主要带你实战了解PHP文件包含漏洞文件包含漏洞LFI/RFI当代码里出现include($_GET[file])、require()等且参数可控时就可以包含任意文件。如果包含的是 PHP 文件默认会当作 PHP 代码执行而不是显示源码。目录一、题目详情二、解题思路及原理1、有一个tips好像可以点击那我们点击看看情况。2、提取源码3、Base64解码一、题目详情题目来源CTF²中的[ACTF2020 新生赛]Include靶场环境启动靶机进入http://ea133ffe4fdd6ee5d0a178a8.http-ctf2.dasctf.com:80二、解题思路及原理1、有一个tips好像可以点击那我们点击看看情况。发现我们的url变了后面变成了执行了一个flag.php源码这就是文件包含漏洞包含的是 PHP 文件默认会当作 PHP 代码执行而不是显示源码。所以下面我们的解题思路就是如何把和这个源码提取到因为这个文件php本身就是flag所以看到了这个文件php里面的内容源码也就能看到flag了2、提取源码php://filter 伪协议用于PHP 源码读取PHP 内置的流包装器用于对文件流做过滤/转换。语法php://filter/[读或写][过滤器]/resource[目标文件]常用过滤器convert.base64-encode把内容做 Base64 编码convert.base64-decode解码string.rot13ROT13 变换ROT13是一种编码方式zlib.deflate/zlib.inflate压缩/解压这里我们采用Base64编码去提取PHP源码直接包含flag.php会执行 PHP 代码页面只显示执行结果看不到源码。用convert.base64-encode后PHP 引擎读到的是 Base64 字符串不会被当作 PHP 代码执行于是源码被原样输出。你拿到 Base64 字符串后解码就能看到flag.php的源代码里面往往就有 flag。我们构造如下url参数然后去拼接到url后面。?filephp://filter/readconvert.base64-encode/resourceflag.php结果如下页面上这串字符就是这个文件源码但是被我们的进行了Base64编码了所以下面对这串字符进行Base64解码就行。3、Base64解码这里采用在线的Base64解码器Base64 在线编码解码 | Base64 加密解密 - Base64.us结果如下好了这里看到了FlagPS其实这个还算是一个比较简单的PHP文件包含这里没有涉及到过滤。如果过滤了相应的东西需要采用相应的方式绕过。如可以尝试大小写、双写、URL 编码等绕过方式