文件读取漏洞专题(一)

任意文件读取漏洞非常基础而又常见,攻击者可以由此收集到大量敏感信息

该专题将对文件读取漏洞的知识进行一些汇总,偶尔会有相关例题解析

任意文件读取简介

攻击者通过一些手段读取到服务器上开发者不允许读到的文件。

web中存读取文件的操作十分常见,若是没有做好安全措施,就容易被攻击者所利用。

不过严格来说,如果服务器被部署得十分“安全”,即使可以读取任意文件,攻击者也得不到太多有价值的信息。

文件读取-php

关键函数包括但不限于:file_get_content()、file()、fopen()、include()、require()、iclude_once()、require_once()、system()、exec()等

php中有许多功能不同而形式相似的协议,统称Wrapper

同时,php的特色机制Filter允许我们对文件流作一定处理,接下来通过一个简单的题目说明一下

[N1BOOK]afr_1

直接访问题目,页面上只有一句hello world。

查看地址栏

发现进行了传参p=hello,接着我们发现直接访问/hello.php也能得到同样内容

访问flag.php时,页面显示,显然不能直接得到flag

这里利用php://filter/convert.base64-encode/resource=index来读取到index.php的内容

解释一下php://filter/convert.base64-encode/resource=xxx的作用:如果我们直接读取源代码,代码会被当作php代码来执行,所以我们将源码进行base64编码输出,再进行解码就可以读取到源码

php://filter在allow_url_fopen 和allow_url_include双off情况下也可用

那么很显然,看到源码,我们很容易就能构造出payload

php://filter/convert.base64-encode/resource=flag

n1book{afr_1_solved}