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 相关文章推荐
PHP的面试题集,附我的答案和分析(一)
Nov 19 PHP
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 PHP
php操作sqlserver关于时间日期读取的小小见解
Nov 29 PHP
PHP 函数学习简单小结
Jul 08 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
php使用mkdir创建多级目录入门例子
May 10 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
php防止网站被刷新的方法汇总
Dec 01 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
php-fpm开启状态统计的方法详解
Jun 23 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
Apr 11 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 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
PHP4(windows版本)中的COM函数
2006/10/09 PHP
收集的DedeCMS一些使用经验
2007/03/17 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
JQquery的一些使用心得分享
2012/08/01 Javascript
jquery动态加载js/css文件方法(自写小函数)
2014/10/11 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
浅谈vue引入css,less遇到的坑和解决方法
2018/01/20 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
浅谈MySQL中的触发器
2015/05/05 Python
Python序列循环移位的3种方法推荐
2018/04/09 Python
python使用turtle库绘制时钟
2020/03/25 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
详解python常用命令行选项与环境变量
2020/02/20 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
美国工业用品采购网站:Zoro.com
2020/10/27 全球购物
回门宴父母答谢词
2014/01/26 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
对祖国的寄语大全
2014/04/11 职场文书
比赛口号大全
2014/06/10 职场文书
留学推荐信中文范文
2015/03/26 职场文书
幽灵公主观后感
2015/06/09 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript
详解MongoDB的条件查询和排序
2021/06/23 MongoDB