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 相关文章推荐
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
php函数的常用方法及注意之处小结
Jul 10 PHP
非常好用的两个PHP函数 serialize()和unserialize()
Feb 04 PHP
用来解析.htgroup文件的PHP类
Sep 05 PHP
解析CodeIgniter自定义配置文件
Jun 18 PHP
PHP操作文件的一些基本函数使用示例
Nov 18 PHP
php中base64_decode与base64_encode加密解密函数实例
Nov 24 PHP
php获取文章上一页与下一页的方法
Dec 01 PHP
详解PHP中foreach的用法和实例
Oct 25 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 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
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
2019/08/12 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
门卫岗位职责
2013/11/15 职场文书
班会关于环保演讲稿
2013/12/29 职场文书
公司委托书范本
2014/04/04 职场文书
2014年优秀党员材料
2014/12/18 职场文书
客房服务员岗位职责
2015/02/09 职场文书
停电调休通知
2015/04/16 职场文书
天气温馨提示语
2015/07/14 职场文书
尊师重教主题班会
2015/08/14 职场文书
教师读书活动心得体会
2016/01/14 职场文书
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android
MongoDB支持的索引类型
2022/04/11 MongoDB
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python