关于PHP复杂变量
前言:之前二开的dede bc审出了一个前台注入,幸运是白名单IP绕过,然后接着就是来到了后台getshell了
参考文章:http://php.net/manual/zh/language.types.string.php
示例题
<?php highlight_file(__FILE__); $str = $_GET['str']; eval('$a="' . $str . '";'); ?>
如果想实现代码执行就需要进行闭合,如:";phpinfo();//
此时var_dump
的$a变量是为空的,如下:
继续看:
<?php highlight_file(__FILE__); $str = $_GET['str']; $str = addslashes($str); eval('$a="' . $str . '";'); ?>
这种上面的payload就不行了,因为addslashes的原因导致了无法闭合,那么直接试试phpinfo()
呢? 发现一片空白,那么也就是没有成功的执行命令,那么打印下$a,可以发现phpinfo()
并没有跟上面一样被解析
那么这时候需要用到PHP的复杂变量了!
利用${}
:
payload:{${phpinfo()}}
,发现如下成功解析
此时打印$a,发现是为空的,那么也就是phpinfo
成功进行解析了
简单语法
当 PHP 解析器遇到一个美元符号($)时,它会和其它很多解析器一样,去组合尽量多的标识以形成一个合法的变量名。可以用花括号来明确变量名的界线
这句话应该很好理解,先说单引号中的字符串是死的,而双引号中的字符串是活的,比如"$a"
,这时候如果出现$符号,PHP解析器就会去寻找对应的$a变量是否存在并且覆盖,同样也可以是{$a}
,为什么需要用这个?比如{$a}a
,这时候{}
的作用就出来了,可以理解为它会提醒PHP解析我只解析$a,而不是$aa,它起到一个分界的作用!
复杂(花括号)语法
任何具有 string 表达的标量变量,数组单元或对象属性都可使用此语法。只需简单地像在 string 以外的地方那样写出表达式,然后用花括号 { 和 } 把它括起来即可。由于 { 无法被转义,只有 $ 紧挨着 { 时才会被识别
这里的$符号就是硬性要求了,如果你想要使用复杂变量就得用$符号!
回到上面,为啥输入${phpinfo()}
不行,而输入{${phpinfo()}}
,才可以呢?或许就是下面这种情况吧!
其实官方手册中也提到了当调用方法的时候需要用{}来进行包裹
注意:函数、方法、静态类变量和类常量可使用 {$} ,在该字符串被定义的命名空间中将其值作为变量名来访问。只单一使用花括号 ({}) 无法处理从函数或方法的返回值或者类常量以及类静态变量的值。
实战
快速Getshell的方式就是直接写配置文件了,正常来说gpc开启,数组格式下的写配置文件基本无解,但是自己这次确实是挺幸运的,配置文件的格式是 $变量 = ''
这种形式的!
自己所处的审计环境,目标配置文件的格式为下面两个点:
1、$变量 = ''
2、主键为变量,值为变量值
比如如下:
edit___a=1&edit___b=1&edit___c=1&edit___d=1&edit___e=1&edit___f=1
则生成的配置文件为:
<?php $a = '1'; $b = '1'; $c = '1'; $d = '1'; $e = '1'; $f = '1'; ?>
这里直接利用PHP的复杂变量来进行getshell:
payload:edit___{eval($test)}=1&edit___b=1&edit___c=1&edit___d=1&edit___e=1&edit___f=1
自己解决的办法是直接通过dede本身的变量注册的机制来进行绕过的!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY