概述
0x00 含义&&类型
首先,PHP文件包含主要由这四个函数完成:
-
include() //包含一些html模块文件
-
require() //包含一些数据库,配置文件
-
include_once() //只调用一次包含文件,多次调用就会报错
-
require_once()
当使用这4个函数包含一个新的文件时,该文件将作为PHP代码执行,PHP内核并不会在意该被包含文件是什么类型。所以如果被包含的是txt文件、图片文件、远程URL,也都将作为PHP代码执行。
include与require的区别在于:
1.include是当代码执行到它所在的行数是,它才会开始包含文件,并且如果文件加载错误,依然会向下执行代码。
2.require是只要当前程序执行它就会立刻包含文件,并且在加载文件错误的时候会停止运行并发出警告。
文件包含漏洞的类型分为:
1.本地文件包含(LFI)
2.远程文件包含(RFI)
当php.ini中,设置allow_url_include=On allow_url_fopen=On,即可执行远程代码。
0x01 包含本地目录文件
简单的漏洞代码示例
1 <?php 2 if($_GET['file']) 3 { include '$_GET['file']';} 4 else 5 include 'hello.php'; 6 ?>
正确页面:
包含当前目录中flag.php文件:
包含上级目录中的某个文件:
既然这样,我们就可以使用./(当前目录)、../(上级目录)对整个目录进行遍历,也就可以获取敏感的文件
0x02 PHP伪协议以及其他封装协议的利用
php各种伪协议参考:http://php.net/manual/zh/wrappers.php.php
1.php://input
php://input可以读取没有处理过的POST数据,不依赖于特定的php.ini指令。当enctype=”multipart/form-data” 的时候 php://input
是无效的。
简单举例如下:
2.php://filter
php://filter可以说是是最经常使用的一个伪协议,用它在没有特殊情况下(我没遇到过TnT)可以进行任意文件的读取。
就拿最近SWPU CTF中学长出的一道题来举例:
题目地址为:http://39.106.13.2/web2/file.php?file=index
在url中发现file=index,有此猜想可能有本地包含获取网页源码,所以尝试直接用php://filter读取index源码
这里用base64加密了index.php的源码,直接解密就得到了源码。
exp: ?key=php://filter/read=convert.base64-encode/resource=xxx.php
3.zip协议&&phar协议
zip协议:http://php.net/manual/zh/wrappers.compression.php
利用phar://协议特性可以在渗透过程中帮我们绕过一些waf检测(此方法使用要php>5.3.0).
关于zip://
zip://test.jpg#dir/test.php
先新建一个test.php,里面写个phpinfo,然后压缩成.zip,然后把zip的名字改成test.jpg后把这个jpg文件上传上去 然后使用zip协议包含.
phar利用方法与zip协议类似。
0x03 一些简单的绕过姿势
有些程序员为了防止本地包含漏洞,通常会编写一些这样的代码:
<?php include $_GET['page'].".php"; ?>
1. 00截断
(1) /etc/passwd%00,访问文件
(2)%00目录遍历
2. 使用长目录截断
/etc/passwd/././././././.[…...]/./././././.
(php版本小于5.2.8(?)可以成功,linux需要文件名长于4096,windows需要长于256)
0x04 相关学习资料
1.文件包含漏洞小节
https://www.cnblogs.com/iamstudy/articles/include_file.html
2.论PHP常见的漏洞
http://www.anquan.us/static/drops/papers-4544.html
3.php伪协议
http://blog.csdn.net/Ni9htMar3/article/details/69812306?locationNum=2&fps=1
4.包含日志文件getshell
https://www.cnblogs.com/my1e3/p/5854897.html
个人的第一篇博客,希望自己在安全的路上越走越好,越走越远
转载于:https://www.cnblogs.com/c1e4r/articles/7806819.html
最后
以上就是酷酷眼睛为你收集整理的文件包含之LFI0x00 含义&&类型0x02 PHP伪协议以及其他封装协议的利用0x03 一些简单的绕过姿势0x04 相关学习资料的全部内容,希望文章能够帮你解决文件包含之LFI0x00 含义&&类型0x02 PHP伪协议以及其他封装协议的利用0x03 一些简单的绕过姿势0x04 相关学习资料所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复