It's our wits that make us men.

2019/4/18 Web BasicFileInclude

Posted on By LuLu

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中独有的一个协议;设计用于”数据流打开”时的”筛选过滤”应用,对本地磁盘文件进行读写。使用不同的参数可以达到不同的目的和效果:

img

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文件包含漏洞相关

img

img

2.打开题目中给的网址,点击Flag之后,并没有得到flag。

img

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加密后的源码已经出来了

img

5.解密,得到flag

img