php eval出错,php的eval调用变量就出错。

现在已经确定服务端PHP代码(不能修改)是

但是在一调用就出错。

因为项目需求。在传值时,必须使用base64_decode("base64处理后的字符串");

所以我测试时,使用的url如下:

http://test.cn/2.php?command=base64_decode("ZWNobyAndGVzdCc7");

但是返回的页面无任何内容。

如果不用base64_decode函数一点事也没有,如下:

http://test.cn/2.php?command=echo "123";

能显示123.

ZWNobyAndGVzdCc7 编码前的字符串为 echo 'test';

服务端代码不能进行改动,请求时必须以base64_decode("base64处理后的字符串")这样的方式来。困扰一天了。

回复内容:

现在已经确定服务端PHP代码(不能修改)是

但是在一调用就出错。

因为项目需求。在传值时,必须使用base64_decode("base64处理后的字符串");

所以我测试时,使用的url如下:

http://test.cn/2.php?command=base64_decode("ZWNobyAndGVzdCc7");

但是返回的页面无任何内容。

如果不用base64_decode函数一点事也没有,如下:

http://test.cn/2.php?command=echo "123";

能显示123.

ZWNobyAndGVzdCc7 编码前的字符串为 echo 'test';

服务端代码不能进行改动,请求时必须以base64_decode("base64处理后的字符串")这样的方式来。困扰一天了。

警告,使用eval是非常危险的行为!

特别是你们对于这个command参数甚至没有任何加密和过滤处理,那么用户哪天传一个参数能查看,显示,编辑其内容,甚至修改,删除服务器所有文件的代码也是可以直接运行的(当你的PHP在以root运行)

抛开这个不谈来分析这个问题

服务器进行eval时,它实际上是等价于运行:

base64_decode("ZWNobyAndGVzdCc7");

这时候会得到一个字符串

echo 'test';

然而,因为你的eval只有一个,所以后面这个base64解码出来的文本,实际上只是一段文本,表达式到这个时候就已经结束了,不会再继续运行,所以要达成楼主的目的,应该是需要这样:

http://test.cn/2.php?command=echo base64_decode("dGVzdAo=");

或者这样:

http://test.cn/2.php?command=eval(base64_decode("ZWNobyAndGVzdCc7"));

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值