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 开发工具
Dec 06 PHP
PHP配置文件中最常用四个ini函数
Mar 19 PHP
PHP用mysql数据库存储session的代码
Mar 05 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 PHP
PHP中判断变量为空的几种方法小结
Nov 12 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
PHP中类的自动加载的方法
Mar 17 PHP
php中的异常和错误浅析
May 03 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
PHP实现微信公众号验证Token的示例代码
Dec 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
ftp类(example.php)
2006/10/09 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
smarty中js的调用方法示例
2014/10/27 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
关于跨站脚本攻击问题
2011/12/22 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
详解Python使用tensorflow入门指南
2018/02/09 Python
python实现大量图片重命名
2020/03/23 Python
Python pip使用超时问题解决方案
2020/08/03 Python
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
心理学专业毕业生推荐信范文
2013/11/21 职场文书
师范大学毕业自我鉴定
2013/11/21 职场文书
建筑公司文秘岗位职责
2013/11/29 职场文书
总经理职责
2013/12/22 职场文书
阿德的梦教学反思
2014/02/06 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
python神经网络ResNet50模型
2022/05/06 Python
vue router 动态路由清除方式
2022/05/25 Vue.js
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python