Web BasicFileInclude
参考资料:
https://www.cnblogs.com/vo-ov/p/3745638.html
https://www.freebuf.com/articles/web/182280.html
http://www.php.cn/toutiao-414790.html
https://blog.csdn.net/qq_35544379/article/details/78230629
知识储备
1.文件包含简介
服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。
2.文件包含函数
PHP中文件包含函数有以下四种:
- require()
- require_once()
- include()
- include_once()
include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。
3.漏洞产生的原因:
文件包含漏洞的产生原因是在通过 PHP 的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码
4.分类
文件包含漏洞可以分为 RFI (远程文件包含)和 LFI(本地文件包含漏洞)两种。而区分他们最简单的方法就是 php.ini 中是否开启了allow_url_include。如果开启 了我们就有可能包含远程文件。
5.php://filter简单理解
大佬笔记https://www.leavesongs.com/PENETRATION/php-filter-magic.html
php://filter (本地磁盘文件进行读取)是php中独有的一个协议;设计用于”数据流打开”时的”筛选过滤”应用,对本地磁盘文件进行读写。使用不同的参数可以达到不同的目的和效果:
php://filter协议有一下几个应用:
1、利用base64获得源码
2、通过读写编码实行绕过操作
用法:?filename=php://filter/convert.base64-encode/resource=xxx.php ?filename=php://filter/read=convert.base64-encode/resource=xxx.php 一样。
解题步骤:
1.认识题目,由于不太了解php文件,对于题目所给的提示上网进行了查询,了解到可能和php文件包含漏洞相关
2.打开题目中给的网址,点击Flag之后,并没有得到flag。
3..注意这里:?page=flag;可以联想到用php://filter协议来查看源文件内容;
按php://filter/read=convert.base64-encode/recource=index.php(这句话的意思是我们用base64编码的方式来读文件index.php;这时页面会显示出源文件index.php经过base64编码后的内容)构造:http://web1.blue-whale.me:23338/?page=php://filter/convert.base64-encode/resource=flag
4.可以看到通过base64加密后的源码已经出来了
5.解密,得到flag