文件读取漏洞专题(一)
任意文件读取漏洞非常基础而又常见,攻击者可以由此收集到大量敏感信息
该专题将对文件读取漏洞的知识进行一些汇总,偶尔会有相关例题解析
任意文件读取简介
攻击者通过一些手段读取到服务器上开发者不允许读到的文件。
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}