php各个版本的特性以及绕过方式

ops/2024/12/23 16:15:23/

一.php各个版本的特性

二.绕过正则匹配的常见方式

1.绕过空格

a.空变量$@
l$@s
b.环境变量IFS(默认情况下IFS为空格、制表符和换行符)
l${IFS}s
c.重定向符(<,>)
cat < file.txt //把file.txt的内容给cat命令,显示在shell中
ls > file.txt //把ls命令显示在shell中的,写入到文件file.txt中
ls < file  //显示file那层的ls命令
d.逗号绕过
{cat,flag.txt} //和cat flag.txt一样

2.绕过某些关键字

a.反斜线绕过(shell中的\用来转义的)
ca\t fl\ag.txt //因为反斜线转义的是特殊字符,所以正常的字符不会转义,即绕过正则匹配又执行了代码
b.两个单引号拼接
l''s //和ls一样,在这里扩展一个python的特性,python字符相加不一定用加好可以直接'a''b',会输出'ab'
c.模糊匹配
1.*(星号):
匹配零个或多个字符。例如,*.txt 匹配所有以 .txt 结尾的文件名。
2.?(问号):
匹配单个字符。例如,file?.txt 可以匹配 file1.txt、fileA.txt 等,但不匹配 file12.txt 或 file.txt(因为 ? 只匹配一个字符)。
3.[](方括号):
匹配方括号内的任意一个字符。例如,file[123].txt 可以匹配 file1.txt、file2.txt 或 file3.txt。
还可以使用范围,如 [a-z] 匹配任何小写字母。
4.[^...](方括号内的否定):
匹配不在方括号内的任意字符。例如,file[^123].txt 不会匹配 file1.txt、file2.txt 或 file3.txt,但会匹配 fileA.txt。
5.{}(花括号):
通常用于扩展,而不是直接的模糊匹配,但可以用于生成一系列匹配的模式。例如,echo file{1..3}.txt 会输出 file1.txt file2.txt file3.txt。
d.内联执行
1.使用分号(;):
分号用于分隔要在单个命令行中顺序执行的命令。Shell会按照从左到右的顺序依次执行这些命令,无论前面的命令是否成功执行。
command1; command2; command3
在这个例子中,command1、command2和command3会依次执行。2.使用逻辑与(&&):
逻辑与操作符用于连接两个命令,并且仅当第一个命令成功执行(即返回状态为0)时,才会执行第二个命令。
command1 && command2
如果command1成功执行,那么command2会被执行;如果command1失败(返回非0状态),那么command2不会被执行。3.使用逻辑或(||):
command1 || command2
如果command1失败执行(返回非0状态),那么command2会被执行;如果command1成功执行(返回0状态),那么command2不会被执行。4.使用子Shell:
你可以将命令放在括号()中,这样它们就会在一个新的子Shell进程中执行。子Shell中的命令之间也可以用分号、逻辑与或逻辑或来连接。
(command1; command2)
或者(command1 && command2)
或者bash
(command1 || command2)
5.使用管道符(|):
管道符用于将一个命令的输出作为另一个命令的输入。这通常用于文本处理任务中,而不是简单的命令串联。
command1 | command2
在这个例子中,command1的输出会被传递给command2作为输入。6.使用后台执行(&):
如果你想要并行执行命令(即同时运行它们),你可以在命令的末尾加上&符号。但是,请注意,这种方式并不会等待第一个命令完成就开始第二个命令;它们会同时运行。
command1 & command2 &
e.编码绕过(类似于base64,16进制编码)

三.弱类型的绕过

详细看这篇文章

CTF之WEB(php弱类型绕过)-CSDN博客

四.常见的函数绕过

1.array_search

$c=(array)json_decode(@$_GET['c']);  //把输入的json格式转成php的数据格式
if(is_array($c) && !is_numeric(@$c["m"]) && $c["m"] > 2022){ //判断c数组里是否不为空,c[m]是否不是数字,并且c[m]是否大于2022if(is_array(@$c["n"]) && count($c["n"]) == 2 && is_array($c["n"][0])){//判断c[n]是否是一个数组,c[n]数组是否有两个,并且c[n][0]也要是数组$d = array_search("DGGJ", $c["n"]);//查找是否含有DGGJ$d === false?die("no..."):NULL;foreach($c["n"] as $key=>$val){$val==="DGGJ"?die("no......"):NULL;//同上}$key2 = 1;}else{die("no hack");}
}else{die("no");
}

这里就用到了array_search查找匹配的时候用的是==而不是===,所以可以采用弱类型绕过

payload

c={"m":"2024a","n":[[],0]}

2.__wakeup(CVE-2016-7124)

漏洞影响版本:

PHP5 < 5.6.25

PHP7 < 7.0.10

漏洞产生原因:

如果存在__wakeup方法,调用 unserilize() 方法前则先调用__wakeup方法,但是序列化字符串中表示对象属性个数的值大于 真实的属性个数时会跳过__wakeup的执行 

攻防世界web进阶区Web_php_unserialize,序列化大详解-CSDN博客

3.+绕过正则匹配

反序列化为啥可以利用加号绕过php正则匹配-CSDN博客

五.一些特殊的绕过

1.php伪协议

  • php://input
    • 用途:读取原始POST数据。
    • 示例:
      php">$data = file_get_contents('php://input');
      echo $data;

      说明:这个伪协议允许你读取通过POST方法发送的原始数据,这在处理JSON、XML或其他非表单数据格式时非常有用。

  • php://output
    • 用途:写入数据到输出缓冲区。
    • 示例:
      php">$data = "Hello, World!";
      file_put_contents('php://output', $data);
    • 说明:这个伪协议允许你直接将数据写入到输出缓冲区,通常用于生成动态内容。
  • php://filter
    • 用途:读取或写入文件,并应用指定的过滤器。
    • 示例:
      php">$data = file_get_contents('php://filter/read=convert.base64-decode/resource=index.php');
      echo $data;
    • 说明:这个伪协议允许你在读取或写入文件时应用各种过滤器,比如base64编码/解码、字符串转换等。
  • php://memory 和 php://temp
    • 用途:读写内存中的数据流。
    • 示例:
      php">$stream = fopen('php://memory', 'r+');
      fwrite($stream, 'Hello, World!');
      rewind($stream);
      echo fread($stream, 13);
      fclose($stream);
    • 说明:php://memory 提供一个基于内存的流,数据会一直保留在内存中,直到脚本结束或显式地释放。php://temp 类似于 php://memory,但当数据大小超过预设限制时,数据会被写入临时文件。
  • zlib://
    • 用途:读取或写入gzip压缩文件。
    • 示例:
      php">$data = file_get_contents('zlib://compressed.gz');
      echo $data;
    • 说明:这个伪协议允许你读取gzip压缩文件的内容,而不需要先解压文件。
  • data://
    • 用途:读取数据URI(Data URI scheme)的内容。
    • 示例:
      php">$data = 'data://text/plain;base64,SGVsbG8sIFdvcmxkIQ==';
      $content = file_get_contents($data);
      echo $content;//file = data://text/plain;<?php system("ls"); ?>; 可以执行php代码
    • 说明:这个伪协议允许你使用base64编码的数据URI来直接嵌入数据。
  • glob://
    • 用途:读取匹配文件路径模式的结果。
    • 示例:
      php">$files = glob('glob://*.php');
      print_r($files);
    • 说明:这个伪协议允许你使用glob模式匹配文件路径,并返回匹配的文件列表。
  • phar://
    • 用途:读取Phar归档文件的内容。
    • 示例:
      php">$data = file_get_contents('phar://archive.phar/file.txt');
      echo $data;
    • 说明:这个伪协议允许你读取Phar归档文件(PHP Archive)的内容,Phar是PHP的打包格式,用于将多个PHP文件打包成一个单独的文件。

2.反单引号

程序中的反单引号“ ` ”-CSDN博客

cat `find` //会找到当前目录下的所有文件目录和文件,并输出
//执行过程是先执行find函数,找到目录和文件,在返回执行cat,cat会输出所有的不是目录的内容,目录不显示内容

六.一些特殊的知识

1.robots协议

举个例子,下面也就是不允许你访问f1ag_1l_h3re.php这个文件,详细看下面的链接

User-agent: *
Disallow: 
Disallow: f1ag_1s_h3re.php

robots协议-CSDN博客


http://www.ppmy.cn/ops/144333.html

相关文章

开源 AI 智能名片小程序源码在个人 IP 打造中的应用与价值

摘要&#xff1a;本文探讨了在个人 IP 打造过程中&#xff0c;开源 AI 智能名片小程序源码所发挥的作用及其价值体现。通过分析个人 IP 打造的内涵与要素&#xff0c;阐述了开源 AI 智能名片小程序源码如何与个人 IP 人设塑造、思想表达、内容输出以及受众定位等方面相结合&…

如何在 echarts 中实现环形图中间的样式自定义

实现效果如图&#xff1a; 主要 series 中的配置&#xff1a; series: [{label: {show: false},emphasis: {label: {show: true,formatter: function(params){return "{name|" params.name "}""\n""{unit|"params.data.rate"}…

Converseen:全能免费批量图像处理专家

还在为繁琐的图像处理任务而烦恼吗&#xff1f;Converseen 是一款功能卓越且完全免费的批量图像处理软件&#xff0c;它以其卓越的易用性、惊人的处理速度和强大的实用性赢得了用户的广泛赞誉。无论您是专业摄影师、设计师&#xff0c;还是仅仅需要处理大量图片&#xff0c;Con…

如何处理对象的状态变化?如何实现工厂模式?

使用成员变量&#xff1a;可以在类中定义成员变量来表示对象的状态&#xff0c;通过修改这些成员变量的值来反映对象的状态变化。封装状态修改操作&#xff1a;将修改状态的操作封装在成员函数中&#xff0c;确保状态的改变遵循一定的规则和逻辑&#xff0c;防止非法状态的出现…

arXiv-2024 | 当视觉语言导航遇见自动驾驶!doScenes:基于自然语言指令的人车交互自主导航驾驶数据集

作者&#xff1a;Parthib Roy, Srinivasa Perisetla, Shashank Shriram, Harsha Krishnaswamy, Aryan Keskar, Ross Greer 单位&#xff1a;加州大学默塞德分校Mi实验室 原文链接&#xff1a;doScenes: An Autonomous Driving Dataset with Natural Language Instruction for…

127、SQLSERVE中union all 和union的使用场景

使用&#xff1a;在 SQL Server 中&#xff0c;UNION 和 UNION ALL 是用于合并两个或多个 SELECT 查询结果的操作符。两者区别union all 会去重&#xff0c;union 不会去重例子&#xff1a; 两张表&#xff1a;stu:stu_id,name emplyee:em_id,name 需求1&#xff1a;sql实…

设计模式-中介模式

背景&#xff08;与外观模式相似&#xff09; 智能家庭中包括各种设备&#xff1a;闹钟、咖啡机、电视机、窗帘。 主人要看电视时&#xff0c;执行以下操作&#xff1a;闹钟响起-》咖啡机做咖啡-》窗帘自动落下-》电视开始播放 传统思路&#xff1a; 闹钟类接收命令&#x…

八字精批API接口PHP实现返回json数据

引言 八字精批是根据个人的出生信息&#xff08;包括姓名、性别、出生年、月、日和时&#xff09;进行命理分析的重要工具。在中国传统文化中&#xff0c;八字命理被广泛应用于个人命运、性格分析以及未来发展的预测。本文将介绍一个八字精批的 API 接口&#xff0c;详细说明其…