会话变量如何触发php代码执行_会话变量触发php代码执行方法【实例】

看不見的法師
发布: 2025-12-22 23:20:02
原创
549人浏览过
PHP会话变量不当使用可导致任意代码执行,包括:一、session_decode反序列化触发魔术方法;二、$_SESSION值直传eval等函数;三、会话变量控制include路径引发文件包含;四、自定义session处理器中执行用户输入;五、旧版PHP中preg_replace的/e修饰符执行会话内容。

会话变量如何触发php代码执行_会话变量触发php代码执行方法【实例】

如果在PHP应用中,会话变量被不当使用或与动态代码执行函数结合,可能导致任意PHP代码被执行。以下是几种实际存在的触发方式:

一、通过session_decode配合unserialize反序列化

当会话数据以序列化格式存储且未严格校验时,攻击者可构造恶意序列化字符串,利用session_decode解析后触发__wakeup或__destruct魔术方法中的危险操作。

1、在PHP配置中启用session.serialize_handler=php_serialize,确保会话以serialize格式写入。

2、在用户可控输入点(如Cookie中的PHPSESSID)注入恶意序列化字符串,例如:O:8:"BadClass":1:{s:4:"code";s:16:"system('id');";}

立即学习PHP免费学习笔记(深入)”;

3、在服务端调用session_start()后立即执行session_decode($_COOKIE['PHPSESSID']),导致反序列化触发代码执行。

二、会话变量直接拼接进eval函数

当开发者将$_SESSION中的值未经过滤直接传入eval、assert或create_function等动态执行函数时,会话变量内容会被当作PHP代码解析执行。

1、设置会话变量:$_SESSION['payload'] = 'phpinfo();';

2、在后续逻辑中存在类似代码:eval('echo ' . $_SESSION['payload']);

3、会话恢复后,该eval语句执行phpinfo()函数。

三、会话变量控制include路径

若会话变量用于动态包含文件路径且未限制目录范围或白名单校验,可导致远程或本地文件包含进而执行PHP代码。

1、设置会话变量:$_SESSION['module'] = '../shell.php';

通义灵码
通义灵码

阿里云出品的一款基于通义大模型的智能编码辅助工具,提供代码智能生成、研发智能问答能力

通义灵码 304
查看详情 通义灵码

2、服务端存在类似逻辑:include $_SESSION['module'] . '.inc';

3、当shell.php存在于Web根目录下且包含PHP代码,该代码将在包含时执行。

四、通过session_set_save_handler自定义处理器执行代码

当使用session_set_save_handler注册自定义会话处理器,并在open、read、write等方法中引入用户可控的会话键名或值时,可能在会话生命周期中触发执行逻辑。

1、定义一个类,其read方法中对$key参数进行eval:eval($key);

2、调用session_set_save_handler(new CustomHandler())并启用会话。

3、通过伪造Session ID使$key参数落入攻击者控制范围,例如ID为'a";phpinfo();//',在read中被拼接执行。

五、会话变量影响preg_replace的/e修饰符(PHP5.4以下)

在旧版PHP中,若会话变量被用作preg_replace第三个参数且正则使用/e修饰符,其内容将被当作PHP代码执行。

1、设置会话变量:$_SESSION['pattern'] = '.*';

2、服务端存在类似调用:preg_replace('/' . $_SESSION['pattern'] . '/e', 'system("ls")', 'test');

3、该正则表达式在匹配时执行system("ls")命令。

以上就是会话变量如何触发php代码执行_会话变量触发php代码执行方法【实例】的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号