2. 文件包含(150)

文件包含 (150)

        -------南京邮电大学ctf : http://4.chinalover.sinaapp.com/web7/index.php

 

2. 文件包含(150)_第1张图片

 

从这道ctf的网址 :http://4.chinalover.sinaapp.com/web7/index.php?file=show.php

我们明显感受到了文件包含的信息

 

文件包含漏洞,先了解一下php://filter
php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。

php://filter

php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和
file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。
php://filter 目标使用以下的参数作为它路径的一部分。 复合过滤链能够在一个路径上指定。详细使用这些参数可以参考具体范例。 php://filter 参数
名称 描述
resource=<要过滤的数据流> 这个参数是必须的。它指定了你要筛选过滤的数据流。 read=<读链的筛选列表> 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。 write=<写链的筛选列表> 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。 <;两个链的筛选列表> 任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。

 

同时我也借此机会学到了文件读取的相关知识。

  • include “test.php”php文件包含,在执行流中插入写在其他文件中的有用的代码。读取的时候也是数据流形式,因此可以使用php://filter进行过滤,返回值为0,1。
  • readfile(“test.php”)是将文件以数据流的形式读取过来,并不会执行,但会在前台浏览器上进行解析。返回值是字节数多少。
  • file_get_contents(“test.php”)返回值为文本内容

    此题运用的就是关于数据流过滤的文件包含,我们一般在进行文件包含的时候都这么写include “test.php”获得的就是test.php直接解析出来。但如果运用readfile(“test.php”) 就不进行解析,导致无法在浏览器前台进行显示。那么问题来了看题

它让我点击它 我一下子就点了他!!!
出来了个这个URL

http://4.chinalover.sinaapp.com/web7/index.php?file=show.php
  • 1

一看呵呵哒,典型的文件包含漏洞我们可以通过构造含有漏洞的语句,查看想要看的代码


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

注解:
1.php://filter/可用于处理打开的数据流,起到过滤作用。如果源文件为.php则很有可能在前台显示不出来。
2.此时我们采用的方法是,先让文件转化为base64格式(convert.base64-encode)然后再输出,这样不论是什么格式的文件都可以在前台输出。

convert.base64-encode和 convert.base64-decode使用这两个过滤器等同于分别
用 base64_encode()和 base64_decode()函数处理所有的流数据。 
convert.base64-encode支持以一个关联数组给出的参数。如果给出了 line-length,base64 输出将被用 line-length个字符为 长度而截成块。
如果给出了 line-break-chars,每块将被用给出的字符隔开。这些参数的效果和用 base64_encode()再加上 chunk_split()相同。

3.再次解码就可得到源代码,怎么样是不是很神奇啊!
看图片:
这里写图片描述
看见了base64编码!!
python解码就行啦,看图
这里写图片描述
就可以得到flag


 

转载于:https://www.cnblogs.com/bmjoker/p/8877336.html

你可能感兴趣的:(2. 文件包含(150))