尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

php特性

php特性
📅 发布时间:2026/6/19 23:46:12
php特性

php特性

函数特性

is_file()绕过

is_file() 如果输入的是存在且正常的文件就返回true,利用函数所能处理的长度限制进行目录溢出,超过is_file能处理的最大长度就不认为是个文件了。
/proc/self/root为根目录,经过实验21个/proc/self/root加上/var/www/html/flag.php便可以绕过

is_numeric()

%0c,%09,%20都可以让is_numeric()函数为true

include()

文件中有<? 就会将 <? 后识别成php代码

assert()

执行命令不需要;

usleep()

返回值 NULL

parse_str()

用来将字符串转换成变量的函数
如:

<?php
$str = "name=Peter&age=43";
parse_str($str, $output);
echo $output['name']; // 输出: Peter
echo $output['age']; // 输出: 43

preg_match()

绕过方法:

  • 该函数当检测的变量是数组的时候会报错并返回0
  • 利用正则回溯最大次数上限绕过绕
    php为了防止dos攻击,可以设置preg_match()正则回溯最大限制。preg_match()默认是1000000次(实测回溯为100w次,5.3.7版本以前是10w次),可在php.ini中查询。
    1. 无回溯匹配正则
      /ab{1,3}c/ 匹配 abbbc时,则无回溯
      
    2. 有回溯匹配正则
      /ab{1,3}c/ 匹配 abbc时,则会产生回溯
      
      • 贪婪量词
        {1,3}为贪婪量词,尽可能匹配更多个字符
        用/ab{1,3}c/匹配 abbc 会匹配 bb
      • 惰性量词
        {1,3}?为惰性量词,可能匹配少个字符
        /ab{1,3}?c/匹配 abbc {1,3}?只会匹配1个b
        参考文章:https://blog.csdn.net/yourdawntown/article/details/120558237
  • 换行绕过

__autoload()

当进行类判断的时候自动调用 php版本<7.2

intval()

  • 该函数不能用于 object,否则会产生 E_NOTICE 错误并返回 1。输入空数组会返回0 非空返回1
  • 开头+和空格会当正数或删除 如:+100 --> 100 %20100-->100
  • 第二个参数 $base 允许为空。
  • 当 base 为空时,默认值是 0,会根据 $var 的格式来调整转换的进制。
    如果 $var 以 0 开头,就使用 8进制
    如果 $var 以0x开头,就使用 16进制
    https://blog.csdn.net/wangyuxiang946/article/details/131156104

create_function()

语法:

create_function(string $args,  string $code)
string $args //声明的函数变量部分
string $code //执行的方法代码部分

其会创造一个匿名函数。
如:

$a=create_function("$a","echo($a);"); 
//创建一个叫做lamvda_1的函数。
//这等价于:
function lambda_1($a){echo($a);
}$a("I'm Liu"); 调用函数等价于 lambda_1("I'm Liu");

利用:
在其第二个参数做手脚。
如

$a=create_function("$a","echo($a);}system('ls');/*");
则创建后变成如下:
function lambda_1($a){echo($a);
}
system('ls');
/*
}
如此便能执行命令。

https://blog.csdn.net/snowlyzz/article/details/127171931#create_function()简介

md5()

该函数传入数组,会返回NULL

in_arry()

该函数有漏洞 没有设置第三个参数 就可以形成自动转换,如:1.php自动转换为1

parse_str()

函数把查询字符串解析到变量中。
注释:如果未设置 array 参数,由该函数设置的变量将覆盖已存在的同名变量

eregi()

可以使用%00绕过匹配(PHP5版本,该函数在PHP7中被弃用)
如:a%00b 只会匹配a

strcmp()

传入数组返回 NULL

basename()

在使用默认语言环境设置时,basename() 会删除文件名开头的非 ASCII 字符和中文,

_()和gettext()

_() 函数即 gettext() 函数,可以将参数翻译成指定语言,一般就是原封不动的输出参数
get_defined_vars 函数可以输出所有变量的信息,两者结合拿到flag

call_user_func()

调用类中函数的方式

<?phpclass myclass {static function say_hello(){echo "Hello!\n";}
}$classname = "myclass";call_user_func(array($classname, 'say_hello'));
call_user_func($classname .'::say_hello');$myobject = new myclass();call_user_func(array($myobject, 'say_hello'));?>

https://www.php.net/manual/zh/function.call-user-func.php

其他特性

1.超过精确度的弱类型问题
超过精确度的数字(小数点后超过17位)在进行弱类型比较时,会出 现相等的情况。例如var_dump(0.99999999999999999==1)的结果 为True。

2.NULL、0、"0"、array()、字母、进制的比较

  • NULL、0、"0"、array()在使用==和false比较时,都会返回true。
  • 字母和数字进行弱类型比较的时候,会转换为NULL。
  • 弱类型比较时,对于进制(十六进制、八进制、二进制等)格式的字 符串,会将其转换为数字。
    3.$GLOBALS数组包含当前脚本内定义成全局范围的所有变量的引用。 数组的键就是变量的名字。
    4.作用域:php函数中无法调用外部变量
    5.$_REQUEST可以接受GET、POST请求
    6.$_SERVER['argv']
    • cli模式(命令行)下,第一个参数$_SERVER['argv'][0]是脚本名,其余的是传递给脚本的参数.
    • 在web页模式下必须在php.ini开启register_argc_argv配置项,$_SERVER['argv']才会有效果。
      此时的 $_SERVER['argv'][0]=$_SERVER['QUERY_STRING'],及为url/?后的值,列如:127.0.0.1/?abc=23 值则为abc=23

其他

  1. php检查两数组是否相等的时候,不会检查指针是否相等,而是会检查元素是否相等
  2. php运算符优先级
无 clone new clone 和 new
左 [ array()
右 ++ – ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减
无 instanceof 类型
右 ! 逻辑运算符
左 * / % 算术运算符
左 + – . 算术运算符和字符串运算符
左 << >> 位运算符
无 == != === !== <> 比较运算符
左 & 位运算符和引用
左 ^ 位运算符
左 | 位运算符
左 && 逻辑运算符
左 || 逻辑运算符
左 ? : 三元运算符
右 = += -= *= /= .= %= &= = ^= <<= >>= =>
左 and 逻辑运算符
左 xor 逻辑运算符
左 or 逻辑运算符
左 , 多处用到
3.反射类new ReflectionClass() 根据逻辑创建不同类时使用反射类。
echo new ReflectionClass('类名');可以输出此类中的属性和方法名。

相关新闻

  • 2025年10月深圳近视手术医生推荐榜:五强对比与口碑评价
  • php_sha1函数特性
  • php非法参数

最新新闻

  • 深入解析S12XDBG硬件调试模块:从比较器、状态机到复杂断点实战
  • 从环境变量到密码安全:Aero处理敏感配置的完整方案
  • CANN/ge获取HCCL跟随流数量
  • RxJavaSample高级技巧:10个实用方法解决回调地狱和复杂异步问题
  • 终极指南:快速解决跨平台中文显示不一致的PingFangSC字体配置方案
  • MiniCPM-V 4.6端侧部署实战:RTX 4070上稳定运行多模态推理

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号