php支持多种封装协议,这些协议常被CTF出题中与文件包含漏洞结合,这里做个小总结。实验用的是DVWA平台,low级别,phpstudy中的设置为5.4.45版本,

设置allow_url_fopen和allow_url_include都为On.

index.php

index.php同级目录下有mytest001.txt ,

mytest002.txt ,

mytest003.zip(其中包含mytest003.txt).

有个小失误,应该写成test003的。

再说明一下,include()函数对文件后缀名无要求,而对其中的语法有要求,即使后缀名为txt,jpg也会被当做php文件解析,只要文件内是<?php  ?>形式就可以执行,但是如果不是php语法的形式,即使后缀为php,也无法执行。

一,php://  访问输入输出流,有两个常用的子协议

1,php://filter  设计用来过滤筛选文件

用法

非php语法文件include失败,直接输出源码内容。

php语法文件include成功,直接运行

如果想要读取运行php文件的源码,可以先base64编码,再传入include函数,这样就不会被认为是php文件,不会执行,会输出文件的base64编码,再解码即可。

若采用rot13编码,对php文件中的<?是无效的,仍会被认为是php文件去执行,但其中的内容是乱码的,是没有输出效果的。

2,php://input

这个协议的利用方法是 将要执行的语法php代码写在post中提交,不用键与值的形式,只写代码即可。

如果可以自己构造代码,就可以看到更重要的信息:

二,file:// 与php:filter类似,访问本地文件,但是只能传入绝对路径

三,phar://  可以查找指定压缩包内的文件

1,传入绝对路径

2,传入相对路径,即同级目录下的文件

四,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://,具体怎么利用以后再来填坑。

最后来总结一下,

php://filter  file:// 可以访问本地的文件

zip://  phar://  可以访问本地压缩文件

php://input  data:  可以自己写入php代码

关于allow_url_fopen和allow_url_include的设置和用法这里有个总结:

参考:http://www.freebuf.com/column/148886.html

转载自:https://blog.csdn.net/zpy1998zpy/article/details/80598768

php伪协议,利用文件包含漏洞的更多相关文章

  1. 配合php伪协议利用文件包含漏洞

    文章来源: https://blog.csdn.net/zpy1998zpy/article/details/80598768?utm_medium=distribute.pc_relevant.no ...

  2. PHP伪协议与文件包含漏洞1

    PHP文件包含漏洞花样繁多,需配合代码审计. 看能否使用这类漏洞时,主要看: (1)代码中是否有include(),且参数可控: 如: (2)php.ini设置:确保 allow_url_fopen= ...

  3. PHP文件包含漏洞攻防实战(allow_url_fopen、open_basedir)

    摘要 PHP是一种非常流行的Web开发语言,互联网上的许多Web应用都是利用PHP开发的.而在利用PHP开发的Web应用中,PHP文件包含漏洞是一种常见的漏洞.利用PHP文件包含漏洞入侵网站也是主流的 ...

  4. PHP文件包含漏洞攻防实战

    本文对PHP文件包含漏洞的形成.利用技巧及防范进行了详细分析,并通过一个真实案例演示了如何利用PHP文件包含漏洞对目标网站进行渗透测试,最终成功获取到网站的WebShell. PHP是一种非常流行的W ...

  5. web安全原理-文件包含漏洞

    前言 起来吃完早饭就开始刷攻防世界的题,一个简单的文件包含题我竟然都做不出来我服了  拿出买的书开始从头学习总结文件包含漏洞! 一.文件包含漏洞 文件包含漏洞 文件包含函数的参数没有经过过滤或者严格的 ...

  6. ✔PHP文件包含漏洞全面总结

    我的另一篇博客总结的不够全面,但依然有借鉴价值:https://www.cnblogs.com/Zeker62/p/15192610.html 目录 文件包含的定义 文件包含漏洞常见函数 文件包含漏洞 ...

  7. 文件包含漏洞File Inclusion

    文件包含漏洞 目录遍历漏洞在国内外有许多不同的叫法,也可以叫做信息泄露漏洞.非授权文件包含漏洞等. 文件包含分类 LFI:本地文件包含(Local File Inclusion) RFI:远程文件包含 ...

  8. 文件包含漏洞(DVWA环境中复现)

    LOW: 源代码: <?php // The page we wish to display $file = $_GET[ 'page' ]; ?> 可以看到,low级别的代码对包含的文件 ...

  9. php安全开发(1)文件包含漏洞

    开发过程总结的漏洞: 一,,如何造成包含漏洞:在通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶 ...

随机推荐

  1. MySQL/MariaDB表表达式(3):视图

    视图是表表达式的一种,所以它也是虚拟表.对视图操作的时候会通过语句动态的从表中临时获取数据. 1.创建.修改视图 CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED ...

  2. 多选穿梭框总结 (vue + element)

    博客地址:https://ainyi.com/23 示例 介绍 实现省市区三级多选联动,可任选一个省级.市级.区级,加入已选框,也可以在已选框中删除对应的区域. 选择对应仓库,自动勾选仓库对应的省,取 ...

  3. [android] 隐式意图和显式意图的使用场景

    激活系统的某些应用,并且往应用里面填一些数据,比如说短信应用 打开短信应用,查看logcat,找到ActivityManager, 看到Display.com.android.mms/.ui.Comp ...

  4. JSTL_Format标记库

    JSTL_Format 一:JSTL Format标记库 如有转载,请标明出处 介绍标记属性的时候,按照顺序必须写的->带有默认值的->其他的,中间用回车隔开 在jsp问价开头加上 < ...

  5. GET和POST两种基本请求方法的区别(转)

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

  6. Android 常用数据操作封装类案例

    1.DbHelper类 继承自SQLiteOpenHelper类,实现对数据库的基本操作 package com.example.utils; import android.content.Conte ...

  7. Angular6 项目开发常用时间组件服务

    一.利用Angular 命令行工具生成一个服务. 详情见:<Angular环境搭建>,服务代码如下: import { Injectable } from '@angular/core'; ...

  8. js 人民币小写金额转换为大写

    function smalltoBIG(n) { var fraction = ['角', '分']; var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', ...

  9. js 时间戳转换为‘yyyy-MM-dd hh:mm’格式(es6语法)

    function formatDate(date,fmt) { if(/(y+)/.test(fmt)){ fmt = fmt.replace(RegExp.$1,(date.getFullYear( ...

  10. es6 语法 (symbol)

    { // 声明 let a1 = Symbol(); let a2 = Symbol(); console.log(a1 === a2); //false let a3 = Symbol.for('a ...