【网络安全篇】php文件包含漏洞

281 阅读2分钟

本文已参与 ⌈新人创作礼⌋ 活动,一起开启掘金创作之路。

🏆今日学习目标: 🍀学习php文件包含漏洞 ✅创作者:贤鱼 ⏰预计时间:35分钟

@TOC

🍀漏洞来源

在之前的php伪协议中我们介绍过include函数的作用,有需要可以在上面链接查找

找找i==nclude==,看看包含的函数能不能被利用

如果包含的函数我们可以控制,那么就有文件包含漏洞

重申一下,include()会将包含的==文件名==下的内容,如果有==php==代码,会执行,木有就直接输出

在这里插入图片描述

如图,1.php中是一个include函数包含flag.php 在这里插入图片描述 代码部分运行,其余部分输出

🍁漏洞模板

<?php

//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        include($c);
        echo $flag;
    
    }
        
}else{
    highlight_file(__FILE__);
}

典型吧

这个告诉我们了,flag在flag.php里,所以我们读取就可以了 例题下面具体细讲

🍁漏洞原理

文件包含结合php伪代码,做到读取flag的目的(这个漏洞可以读取任意文件)

🍀 漏洞利用

🍁本地包含

比如文件上传漏洞类型的题目 我们可以上传包含一个php代码的文本/图片,最后包含我们上传内容的路径,也会执行

这个部分在后序的==文件上传漏洞==会细讲,有兴趣的可以关注一下

🍁远程包含

需要配置文件(php.ini)中的配置项 allow_url_fopen 和 allow_url_include 为 On

依旧是上传一个图片,然后保存图片的路径,包含图片路径即可

🍀结合php伪协议

今天我们细讲这一部分

==这里需要回顾一下php伪协议==,如果有不懂一定要去翻看以往文章,不然下面内容可能会看不懂

🍁结合php://filter

这个的作用是将读入的内容进行编解码

在这里插入图片描述 还是他,眼熟不? 我们如何利用php://filter来获得flag呢? 在这里插入图片描述 在这里插入图片描述 我们最后将system中的内容改成cat flag就可以了

🍁结合php://input

这个可以让我们在http请求体中写php代码

还是上面的题目 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

🍁结合data://

这个可以让我们直接写入代码,或者经过base64编码后写代码(绕过过滤)

在这里插入图片描述 这里后面base64编码的内容是

在这里插入图片描述 也可以执行成功

可能有人说:啊贤鱼这些都是同一个题,有木有不同的?

在这里插入图片描述

看到没看到没!php过滤掉了,用不得了,咋办?

在这里插入图片描述

这不就有了? 在这里插入图片描述

🍀总结

可以发现,无论什么题目,都是想方设法搞一坨php代码上去,所以文件包含漏洞就是这个思路

🏆结束语🏆

这一部分其实有很多都是在伪协议中介绍过,我们在这里做个补充,其实文件包含漏洞还有很多,比如上传文件和包含日志,这些会在文件上传漏洞之再次介绍

请添加图片描述