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 相关文章推荐
Apache2 httpd.conf 中文版
Dec 06 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
Mar 18 PHP
PHP mkdir()无写权限的问题解决方法
Jun 19 PHP
PHP实现AES256加密算法实例
Sep 22 PHP
php中file_get_contents与curl性能比较分析
Nov 08 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
Sep 02 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
May 30 PHP
centos7上编译安装php7以php-fpm方式连接apache
Nov 08 PHP
PHP7数组的底层实现示例
Aug 25 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 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
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
php适配器模式介绍
2012/08/14 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python的ORM框架SQLObject入门实例
2014/04/28 Python
Python中多线程thread与threading的实现方法
2014/08/18 Python
理解python正则表达式
2016/01/15 Python
python中的随机函数random的用法示例
2018/01/27 Python
python实现共轭梯度法
2019/07/03 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
智乐游戏测试笔试题
2014/05/21 面试题
租房协议书
2014/04/10 职场文书
职业规划实施方案
2014/06/10 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
个人批评与自我批评
2014/10/15 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
学生会任命书范本
2015/09/21 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
MySQL基础(一)
2021/04/05 MySQL