为什么$a ="{phpinfo}"; @eval("var_dump($$a);"); 中phpinfo可以执行


为什么$a ="{phpinfo}"; @eval("var_dump($$a);"); 中phpinfo可以执行

文章插图
这个不算是特性 , 当${}一起用并且内部是一个函数的话 , 内部函数会被执行 , php解释器会自动略过无效的${} , 你可以试试${print_r()}或者自定义一个函数测试 , 都会正常出现结果!和可变变量和花括号没什么关系 , 如果你直接{phpinfo()}还是会正常报错并且 , var_dump()在eval运行前就是一个字符串 , 并不会当做函数去解释 , 只有当eval()将其当做代码运行之后才会解释 , 所以并不是返回值不是代码了 , 而是evel()运行最早 , 只有eval()运行后var_dump()才是一个php函数 , 否则他就是一个字符串!
【为什么$a ="{phpinfo}"; @eval("var_dump($$a);"); 中phpinfo可以执行】

    推荐阅读