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的FTP学习(三)
Oct 09 PHP
php中++i 与 i++ 的区别
Aug 08 PHP
php判断是否为json格式的方法
Mar 04 PHP
ThinkPHP中自定义目录结构的设置方法
Aug 15 PHP
PHP获取QQ达人QQ信息的方法
Mar 05 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
Mar 12 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
php魔术方法功能与用法实例分析
Oct 19 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
PHP实现的抓取小说网站内容功能示例
Jun 27 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 14 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缓存机制Output Control详解
2014/07/14 PHP
php实现删除空目录的方法
2015/03/16 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
JS修改css样式style浅谈
2013/05/06 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
python 图片验证码代码分享
2012/07/04 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
尼克松手表官网:Nixon手表
2019/03/17 全球购物
澳大利亚波西米亚风情网上商店:Czarina
2019/03/18 全球购物
捷科时代的软件测试笔试题
2015/11/09 面试题
初中生三年学习生活的自我评价
2013/11/03 职场文书
找工作最新求职信
2013/12/22 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
珍惜资源的建议书
2014/08/26 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
分居协议书范本
2014/11/03 职场文书
道歉情书大全
2015/05/12 职场文书
关于童年的读书笔记
2015/06/26 职场文书
MySQL系列之四 SQL语法
2021/07/02 MySQL
10大幻兽系恶魔果实 蝙蝠果实上榜,第一自愈能力强
2022/03/18 日漫
什么是SOLID
2022/03/24 Javascript
MySQL Server层四个日志的实现
2022/03/31 MySQL
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python