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 静态化实现代码
Mar 20 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
Sep 23 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
Sep 24 PHP
PHP 搜索查询功能实现
Nov 29 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
简单实现php上传文件功能
Sep 21 PHP
基于swoole实现多人聊天室
Jun 14 PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 PHP
Yii2框架中一些折磨人的坑
Dec 15 PHP
PHP实现简易图形计算器
Aug 28 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
德生H-501的评价与改造
2021/03/02 无线电
PHP 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
给ECShop添加最新评论
2015/01/07 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
extjs form textfield的隐藏方法
2008/12/29 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
js 窗口抖动示例
2013/09/04 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
2016/12/13 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
Node.js使用Express.Router的方法
2017/11/14 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
Python正则表达式完全指南
2017/05/25 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
使用python实现knn算法
2017/12/20 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
python对象与json相互转换的方法
2019/05/07 Python
python 进程的几种创建方式详解
2019/08/29 Python
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
美术教师求职信范文
2015/03/20 职场文书
高中班长竞选稿
2015/11/20 职场文书
对Keras自带Loss Function的深入研究
2021/05/25 Python
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android
前端JavaScript大管家 package.json
2021/11/02 Javascript