文件包含之LFI

文件包含之LFI

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(KaTeX parse error: Expected '}', got 'EOF' at end of input: … { 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目录遍历

  1. 使用长目录截断
    /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

发布了14 篇原创文章 · 获赞 6 · 访问量 2439

猜你喜欢

转载自blog.csdn.net/qq_43409582/article/details/96116157
LFI
今日推荐