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 相关文章推荐
自动分页的不完整解决方案
Jan 12 PHP
PHP 输出缓存详解
Jun 20 PHP
php dirname(__FILE__) 获取当前文件的绝对路径
Jun 28 PHP
php实现获取文章内容第一张图片的方法
Nov 04 PHP
php 魔术方法详解
Nov 11 PHP
Php-Redis安装测试笔记
Mar 05 PHP
PHP实现的json类实例
Jul 28 PHP
php实现的debug log日志操作类实例
Jul 12 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
php关联数组与索引数组及其显示方法
Mar 12 PHP
PHP中检查isset()和!empty()函数的必要性
Feb 13 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
Python Socket传输文件示例
2017/01/16 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
2018/05/31 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
python输出pdf文档的实例
2020/02/13 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
Python基于内置函数type创建新类型
2020/10/22 Python
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
介绍一下UNIX启动过程
2013/11/14 面试题
应届毕业生应聘自荐信
2013/12/07 职场文书
秋季运动会通讯稿
2014/01/24 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
担保书范文
2019/07/09 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
python实现商品进销存管理系统
2022/05/30 Python
Redis实现分布式锁的五种方法详解
2022/06/14 Redis
Python sklearn分类决策树方法详解
2022/09/23 Python