php特性

文章目录

  • 函数特性
    • 匹配数组报错
    • 进制转换绕过
    • 正则表达式匹配换行
    • 绝对路径绕过
  • 弱类型语言隐式转换
      • 核心概念
      • 转换规则
  • 运算符优先级

函数特性

匹配数组报错

在这里插入图片描述
以此为例,如果传入参数是一个数组,则preg_match()函数报错返回0,完成绕过,而intval()函数只关心数组的元素数量,其中有元素则返回1,无元素则返回0.
在这里插入图片描述
同样的道理,MD5函数在处理数组时会报null

payload:a[]1=&b[]=2
注意是post请求

进制转换绕过

在这里插入图片描述

  • 接下来是类似的原理,但是需要绕过判断而让函数正常执行,显然数组匹配不行,那么有没有其他方法呢?
    继续了解intval函数,发现intval($num,0)是将num转为十进制形式,而num在与4476做判断时,不会自动进行进制的转换,利用这一点采取十六进制即可绕过
  • 在此基础上,如果我们绕过的限制继续增加
  • 在这里插入图片描述
  • 字符被禁用,所以十六进制不可行,采用八进制010574,但是strpos会返回字符串中第一个值为0的字符的位置,如果第一个字符是0,取非后变成1,将无法完成绕过,因此我们采取在八进制前加上空格
payload:%20010754

正则表达式匹配换行

在这里插入图片描述
在这个例子中,我们在第一个if中需要从开头到结尾是php,i为不区分大小写,m为每一行都要进行匹配检测,只要其中一行满足即可,再第二个if中,我们只看第一行满不满足,所以可以基于此特性在第一行构造

cmd=f%0aphp
%0a是换行符的url编码形式

绝对路径绕过

在这里插入图片描述

直接给flag.php会被过滤,我们猜测flag所在的绝对路径
\var\www\html\flag.php

这样在进行比较时能顺利完成绕过

弱类型语言隐式转换

核心概念

PHP 是 弱类型语言(动态类型),意味着变量的数据类型 不会固定,且在不同操作中会自动隐式转换类型。字符串和整数比较时,PHP 会先将字符串转换为整数,再进行数值比较。

转换规则

当字符串和整数比较时,PHP 会按照以下规则处理字符串:

  1. 从左到右扫描字符串,直到遇到第一个非数字字符为止
  2. 提取前面的数字部分转换为整数
  3. 如果没有数字部分,则转换为 0在这里插入图片描述
    由此我们知道,传入2.php跟传入2会产生相同的效果

运算符优先级

在这里插入图片描述
看似需要三个变量值都为数字,实际上在判断完v1之后赋值运算就结束了,涉及到php运算符优先级的问题在这里插入图片描述
另外一个问题在于v2中不能含有;而v3中必须含有;
解决方案:用?>代替; 用注释符除去冗余信息

payload:v1=1&v2=system(‘tac ctf*’)/&v3=/;

继续看,过滤程度加深,学习一种新方法在这里插入图片描述

echo new ReflectionClass('ctfshow');
通过反射类查看ctfshow类的具体信息

开始构造

v1=1&v2=echo new ReflectionClass&v3=;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/979303.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多通道数据采集和信号生成的模块化仪器如何重构飞机电子可靠性测试体系?

飞机的核心电子系统包括发电与配电系统,飞机内部所有设备和系统之间的内部数据通信系统,以及用于外部通信的射频设备。其他所有航空电子元件都依赖这些关键总线进行电力传输或数据通信。在本文中,我们将了解模块化仪器(无论是PCIe…

如何在RedHat官网查询CVE漏洞信息

1.访问红帽(Redhat)官网 https://access.redhat.com/ 2.按照以下路径逐步访问 在官网导航栏中找到“Security”选项,点击进入后选择“Red Hat CVE Database” 3.搜索CVE漏洞编号 在页面的搜索框中输入具体的 CVE 漏洞编号,然后…

SpringCloud Gateway 集成 Sentinel 详解 及实现动态监听Nacos规则配置实时更新流控规则

目录 一、前言二、版本选择和适配 2.1、本文使用各组件版本2.2、官方推荐版本 三、部署sentinel-dashboard 3.1、下载 sentinel-dashboard jar包3.2、启动 sentinel-dashboard 四、Gateway 集成 Sentinel实现控制台配置流控规则测试 4.1、添加Gateway 集成 Sentinel 包4.2、添加…

星闪开发入门之常见报错整理(一)

系列文章目录 星闪开发入门之常见报错整理(一) 文章目录 系列文章目录前言一、ComX open fail, please check com is busy or not exist二、‌CMake下载失败三、配置文件出现语法错误四、路径过长导致编译报错五、ninja: build stopped: subcommand fai…

建筑兔零基础人工智能自学记录33|基础知识1

插入学习一下一些基础概念: 1、基本概念 人工智能:让机器像人一样思考。机器学习ML:计算机获取知识的过程。深度学习:机器的一种思考方式(借助神经网络)。 三者关系 2、机器学习的方式 监督学习&#x…

GPT-4.5 怎么样?如何升级使用ChatGPTPlus/Pro? GPT-4.5设计目标是成为一款非推理型模型的巅峰之作

GPT-4.5 怎么样?如何升级使用ChatGPTPlus/Pro? GPT-4.5设计目标是成为一款非推理型模型的巅峰之作 今天我们来说说上午发布的GPT-4.5,接下来我们说说GPT4.5到底如何,有哪些功能?有哪些性能提升?怎么快速使用到GPT-4.…

yolov8 目标追踪 (源码 +效果图)

1.在代码中 增加了s键开始追踪 e键结束追踪 显示移动距离(代码中可调标尺和像素的比值 以便接近实际距离) 2.绘制了监测区域 只在区域内的检测 3.规定了检测的类别 只有人类才绘制轨迹 import osimport cv2 from ultralytics import YOLO from collections import defaultdic…

Pytorch中的主要函数

目录 一、torch.manual_seed(seed)二、torch.cuda.manual_seed(seed)三、torch.rand(*size, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)四、给大家写一个常用的自动选择电脑cuda 或者cpu 的小技巧五、torch.version.cuda;torch.bac…

PT2025 单触控双输出 LED 调光 IC

1. 产品概述 PT2025 是一款单键电容式触摸控制 ASIC ,支持单通道触摸输入和单路 / 双路 PWM 输出,可 引脚配置 4 种模式。主要应用于触摸卫浴镜开关盒,具有介质自适应、高抗干扰、宽工作电压范 围、灯光无频闪、外围器件少的突出优…

Python基于机器学习的微博舆情情感分析系统,微博评论情感分析可视化系统(全新升级)

大家好,今天为大家带来的是Python基于机器学习的微博舆情情感分析系统,微博评论情感分析可视化系统,这个系统在原本的系统上进行优化升级。 算法从开源框架的 snlow ,到支持机器学习的 lstm 算法可以手动输入语句,进行…

【02】Cocos游戏开发引擎从0开发一款游戏-cocos项目目录结构熟悉-调试运行项目-最重要的assets资源文件认识-场景sense了解-优雅草卓伊凡

【02】Cocos游戏开发引擎从0开发一款游戏-cocos项目目录结构熟悉-调试运行项目-最重要的assets资源文件认识-场景sense了解-优雅草卓伊凡 开发背景 接下来我们直接打开我们的项目开始进一步操作, 实战开发 导入项目 我把得到的项目解压到本地,我们开…

unity pico开发 三 移动 旋转 传送

文章目录 LocomtionSystem平滑移动转身碰撞体随相机改变身高传送添加射线两种传送区域TeleportationAreaTeleportationArea 美化传送射线 LocomtionSystem 在XR Origin上添加LocomtionSystem脚本,并拖拽XR Origin属性 这是移动的基础 平滑移动 在XR Origin上添加…

C语言整体梳理-基础篇-结构体

结构体详解 1.1结构体是什么? 结构体是一些值的集合,这些值成为成员变量,结构体的每个成员可以是不同类型的变量。 数组是相同类型的元素组成的集合,结构体可以是不同类型元素组成的集合。 1.2结构体的声明 1.2.1常规声明 s…

深度解读 AMS1117:从电气参数到应用电路的全面剖析

在电子设备的电源管理领域,线性稳压器扮演着至关重要的角色,而 AMS1117 凭借其出色的性能和广泛的适用性,成为众多工程师的热门选择。本文将依据相关资料,对 AMS1117 的特性、应用、电气参数等方面进行详细解读。 一、功能特性概…

LabVIEW中交叉关联算法

交叉关联算法通过统计多通道信号间的相关性,抑制各通道独立的本底噪声,保留共有的有效信号成分。其数学本质为对多个通道信号进行两两相乘并累加,最终通过归一化处理得到降噪后的输出信号。 这个VI演示了如何在LabVIEW中执行信号的互相关分析…

SAP-ABAP:SAP数据库视图(Database View)详解-创建

在SAP系统中,数据库视图(Database View) 是一种基于物理数据库表的虚拟表,通过关联多个表(使用INNER JOIN)生成逻辑数据集。它存储在数据库中,但本身不存储数据,仅通过查询动态生成结…

GPT-4.5来了

https://chat.xutongbao.top/

Vue3+Node/Express支付宝沙箱支付与确认支付

Vue3Node/Express支付宝沙箱支付与确认支付 支付宝沙箱配置进入沙箱选择自定义密钥 密钥工具下载生成密钥格式转换 自定义密钥设置Express安装依赖项目目录创建alipay.js请求(打开支付)代码router/pay.jsapp.js 前端代码前端封装接口前端调用 实现支付查…

Java数据结构第十四期:走进二叉树的奇妙世界(三)

专栏:数据结构(Java版) 个人主页:手握风云 目录 一、二叉树OJ练习题 1.1. 相同的树 1.2. 另一棵树的子树 1.3. 翻转二叉树 1.4. 平衡二叉树 1.5. 对称二叉树 一、二叉树OJ练习题 1.1. 相同的树 判断两棵树是否相同,我们是否只能遍历一…

生成式AI项目的生命周期

总结自视频(吴恩达大模型入门课):9_13_generative-ai-project-lifecycle_哔哩哔哩_bilibili 生成周期如下图,包含四部分:任务范围(Scope),选择大模型(Select&#xff09…