文件包含
Bugku-web-文件包含
进入靶场
出现click me?点击试试
新页面显示index.php,且url上出现?file=show.php
?file=XXX.php等是典型的文件包含
题目页面显示了index.php,首先在url后面改为?file=index.php看看,发现不能进入这个页面
之后就想到文件包含可以使用PHP伪协议,php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取。
1 | 获取源码代码 |
然后怎么做题就显而易见了
先在url后改为
?file=php://filter/read=convert.base64-encode/resource=show.php
通过Base64解码后发现内容就是index.php,说明show.php没有隐藏信息
再在url后改为
获得一大串编码,解码后为
flag就出现了
文件包含知识点
一、原理:
在开发过程中,当频繁需要跳转网页,或者需要某个函数时,程序员喜欢将重复的函数写道一个单独的文件中,在需要时调用文件,这种文件调用叫做文件包含
文件调用可以使代码更简介,同时使用代码更方便、更快速,但同时也带来的对应的漏洞
当调用的不是函数,而是一个文件时,就相当于把这个文件变了变量,也就给了用户操控参数的机会,就可能造成文件包含漏洞
二、PHP伪协议
2.1 php://fileter
可以读取目标文件的内容,由于读取时,一些代码不能显示,通常使用Base64加密后读取再解密,
1 | 第一种用法: |
2.2 php://input
可以将POST请求当作代码使用,有限制条件
1 | php <5.0 ,allow_url_include=Off 情况下也可以用 |
代码:
1 | ?file=php://input |
用法:
1.写入木马如在POST中输入
1 | system("dir") |
Comments
Comment plugin failed to load
Loading comment plugin