eval(cmd)与eval($cmd)的区别与联系


Posted in PHP onJuly 07, 2021

这个问题一直困扰我许久,今天终于解决清楚了

问题1:eval的执行是否需要双引号包括:

先看三个命令:

A:<?php eval(system(dir))?>
B:<?php
	$cmd="system(dir)"; 
	eval($cmd)?>

A结果:

eval(cmd)与eval($cmd)的区别与联系

B结果:

eval(cmd)与eval($cmd)的区别与联系

报错

思考:

同样是一个命令,为什么会出现如此区别,询问了其他师傅得知:eval执行的是变量的值的时候,该变量值需要闭合,也就是必须是一个完整的语句,需要用分号结尾。根据这个道原理我们改一下上面的命令看看:

<?php
	$cmd="system(dir);"; 
	eval($cmd)?>

结果:

eval(cmd)与eval($cmd)的区别与联系
发现是可以执行的。

后话:

关于这个点,还需要补充一个:

内置函数在eval里面直接执行时不需要加分号,看两个命令就知道了:

eval(system(dir));
eval(system(dir););

eval(cmd)与eval($cmd)的区别与联系

内置函数不需要加分号,其实我觉得加不加分号都一样,因为加了分号就要加引号,引号也带有解析的意思

理解一下命令执行中的闭合:

看代码:

eval(system(dir));
eval(system(dir););

看看结果:

eval(cmd)与eval($cmd)的区别与联系

这里可以并且后面语句是不影响解析的

<?php
	eval("system(dir);?>xyusaiqeqcyuqqwdnoqcq");
	?>

eval(cmd)与eval($cmd)的区别与联系

我们这里都是不影响的,为什么?

如果我们是简单的闭合eval这个命令

那我们的playload应该是:

<?php 
	eval("system(dir));?>xyusaiqeqcyuqqwdnoqcq");
?>
上面的代码我错误的理解成:
<?php 
	eval("system(dir)");?>
	xyusaiqeqcyuqqwdnoqcq");
?>

之前我错误的以为是这样的闭合的,但是后来发现我错了,直到在有一道题目中我发现这样闭合不了,后面询问了一下其他师傅,得到答案:

eval()这个函数可以理解成我们是将eval(字符串)这里面的字符串放到了一个新的php里面去运行,这个新的php本来就又 <?php 所以当我们传入 system(dir);?>dasdas的时候,?>就以及阶段了php代码

学习了~

PHP 相关文章推荐
smarty section简介与用法分析
Oct 03 PHP
PHP读取XML值的代码(推荐)
Jan 01 PHP
写出高质量的PHP程序
Feb 04 PHP
php计算十二星座的函数代码
Aug 21 PHP
PHP分页详细讲解(有实例)
Oct 30 PHP
PHP将回调函数作用到给定数组单元的方法
Aug 19 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
Aug 28 PHP
php中static 静态变量和普通变量的区别
Dec 01 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
Nov 24 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 PHP
用php如何解决大文件分片上传问题
Jul 07 #PHP
php 文件上传至OSS及删除远程阿里云OSS文件
Jul 04 #PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
laravel添加角色和模糊搜索功能的实现代码
一文搞懂php的垃圾回收机制
You might like
深入PHP异步执行的详解
2013/06/03 PHP
php实现监听事件
2013/11/06 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
node中实现删除目录的几种方法
2019/06/24 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
Python中asyncore的用法实例
2014/09/29 Python
Python实现的Excel文件读写类
2015/07/30 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
Python内置函数delattr的具体用法
2017/11/23 Python
使用Python进行目录的对比方法
2018/11/01 Python
python自动发微信监控报警
2019/09/06 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
党员干部群众路线个人整改措施
2014/09/18 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
出纳试用期自我评价
2015/03/10 职场文书
请病假条范文
2015/08/17 职场文书
python pygame 开发五子棋双人对弈
2022/05/02 Python