JSON数据怎样解析触发php代码执行_JSON数据解析触发php代码执行方法【解析】

蓮花仙者
发布: 2025-12-23 13:31:29
原创
298人浏览过
不安全JSON解析在PHP中可导致代码执行,主要方式包括:一、eval动态执行;二、unserialize反序列化漏洞;三、键名反射调用函数;四、preg_replace /e修饰符注入;五、自动加载机制触发恶意类执行。

json数据怎样解析触发php代码执行_json数据解析触发php代码执行方法【解析】

如果JSON数据在PHP环境中被不安全地解析,可能导致意外的代码执行。以下是实现JSON数据解析并触发PHP代码执行的几种方法:

一、使用eval函数动态执行JSON中的PHP代码

该方法将JSON中预设的PHP代码字符串提取后,通过eval直接执行。此方式绕过常规JSON解码逻辑,直接将字段内容作为PHP指令运行。

1、构造包含PHP代码字符串的JSON,例如:{"cmd":"echo 'Hello'; system('id');"}。

2、使用json_decode解析JSON,获取cmd字段值。

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

3、对cmd字段内容进行基础校验(如白名单关键词过滤)后,用eval('?>' . $cmd)执行。

二、利用unserialize配合JSON反序列化漏洞

当JSON数据被错误地转换为PHP序列化格式并调用unserialize时,若存在可利用的魔术方法类,可能触发任意代码执行。

1、构造JSON数据,其值模拟序列化字符串结构,例如:{"data":"O:8:\"EvilClass\":1:{s:4:\"code\";s:12:\"system('ls');\";}"}。

2、将data字段值取出,替换JSON双引号与转义符,拼接为合法序列化字符串。

3、调用unserialize($malicious_str),触发__wakeup或__destruct中的危险操作。

三、通过JSON键名动态调用函数

该方法利用JSON对象键名作为函数名,值作为参数,结合call_user_func_array实现反射式执行。

1、构造JSON,例如:{"function_name":"exec","args":["whoami"]}。

剪小映
剪小映

记录美好智能成片,AI智能视频剪辑

剪小映 902
查看详情 剪小映

2、使用json_decode解析为关联数组,提取function_name和args字段。

3、检查function_name是否在允许函数白名单内,确认后执行:call_user_func_array($func, $args)

四、借助preg_replace的/e修饰符注入(PHP 5.4及更早版本)

在旧版PHP中,若JSON中包含正则表达式模式与替换字符串,且解析后传入preg_replace并启用/e修饰符,可导致代码执行。

1、构造JSON,例如:{"pattern":"/.*/e","replacement":"phpinfo()"}。

2、解析JSON后取出pattern和replacement字段。

3、执行preg_replace($pattern, $replacement, 'test'),触发replacement中PHP代码解释执行。

五、利用对象自动加载机制配合JSON解码结果

当JSON解码为对象且属性被访问时,若存在__get或__set等魔术方法,并配合自动加载未定义类,可能触发恶意类文件包含与执行。

1、构造JSON,例如:{"class":"MaliciousPayload","param":"/tmp/shell.php"}。

2、使用json_decode($json, false)生成stdClass对象。

3、对该对象属性赋值或读取,触发自动加载机制,加载并实例化MaliciousPayload类,其构造函数中执行include $this->param

以上就是JSON数据怎样解析触发php代码执行_JSON数据解析触发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号