🏆今日学习目标:
🍀学习php文件包含漏洞
✅创作者:贤鱼
⏰预计时间:35分钟
🎉个人主页:贤鱼的个人主页
🔥专栏系列:网络安全
🍁贤鱼的个人社区,欢迎你的加入 贤鱼摆烂团
🍁如果有需要可以查看下面文章
25分钟了解php?php基础
【网络安全篇】php伪协议-漏洞及其原理会用到
php文件包含漏洞
🍀漏洞来源
在之前的php伪协议中我们介绍过include函数的作用,有需要可以在上面链接查找
找找include,看看包含的函数能不能被利用
如果包含的函数我们可以控制,那么就有文件包含漏洞
重申一下,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代码上去,所以文件包含漏洞就是这个思路
🏆结束语🏆
这一部分其实有很多都是在伪协议中介绍过,我们在这里做个补充,其实文件包含漏洞还有很多,比如上传文件和包含日志,这些会在文件上传漏洞之再次介绍