隐藏字段可被用于触发PHP代码执行,包括:一、拼入eval等函数执行恶意代码;二、绕过文件包含白名单导致RCE或源码泄露;三、注入系统命令函数造成命令执行;四、反序列化漏洞触发魔术方法;五、SQL二次注入实现延迟型攻击。

如果表单中包含隐藏字段,且该字段被恶意构造或服务端未做充分校验,则可能被用于触发非预期的 PHP 代码执行。以下是几种常见且实际可操作的触发方式及其对应的服务端处理逻辑缺陷:
一、利用隐藏字段传递恶意 eval() 参数
当 PHP 脚本直接将隐藏字段值拼入 eval()、assert() 或 create_function() 等动态执行函数中时,攻击者可通过构造特定 payload 实现代码执行。
1、在 HTML 表单中添加隐藏字段:phpinfo();exit();">
2、PHP 后端接收并未经滤直接执行:eval('return ' . $_POST['callback'] . ';');
立即学习“PHP免费学习笔记(深入)”;
3、提交表单后,phpinfo() 函数将在服务器端执行并输出环境信息。
二、通过隐藏字段绕过文件包含白名单校验
当隐藏字段用于控制 include/require 路径,且未严格限制文件扩展名或路径遍历时,可导致远程代码执行或本地文件泄露。
1、构造隐藏字段:
2、PHP 后端使用该字段进行包含:include $_GET['page'];
3、服务端响应将返回 index.php 源码的 base64 编码内容,解码后即可获取原始 PHP 代码。
三、隐藏字段注入到系统命令函数参数中
若隐藏字段值被拼接到 system()、exec()、shell_exec() 等函数中且未过滤分号、反引号、$() 等 Shell 元字符,将导致命令注入。
1、设置隐藏字段:
2、PHP 后端调用:system('ping -c 1 ' . $_POST['ip']);
3、实际执行的命令变为 ping -c 1 127.0.0.1;id,id 命令将被执行并返回当前用户权限信息。
四、利用隐藏字段触发反序列化漏洞
当隐藏字段携带序列化字符串,且服务端使用 unserialize() 直接解析而未启用 __wakeup() 或 __destruct() 安全防护机制时,可触发魔术方法中的恶意逻辑。
1、构造含恶意 gadget 的序列化字符串:
2、PHP 后端执行:$obj = unserialize($_POST['data']);
3、若 Example 类定义了 __wakeup() 方法并执行 $this->cmd,whoami 将作为系统命令被执行。
五、隐藏字段参与 SQL 查询拼接引发二次注入
当隐藏字段值被存入数据库后再从库中取出拼入新查询,且无预处理机制时,可能造成延迟型代码执行(如联合 DNS 外带或写入 Webshell)。
1、提交隐藏字段:html/shell.php'-- ">
2、首次插入语句未校验:INSERT INTO logs (token) VALUES ('".$_POST['token']."');
3、后续读取 token 并拼接查询:SELECT * FROM logs WHERE id = ".$_GET['id'];,触发写入 Webshell 到网站根目录。











