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源代码加密?PHP二进制加密与解密的解决办法
Apr 22 PHP
PHP 如何获取二维数组中某个key的集合
Jun 03 PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 PHP
php动态函数调用方法
May 21 PHP
CodeIgniter与PHP5.6的兼容问题
Jul 16 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
Aug 23 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
Yii框架的路由配置方法分析
Sep 09 PHP
TP5框架安全机制实例分析
Apr 05 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实现mysql事务处理的方法
2014/12/25 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
jquery 简单的进度条实现代码
2010/03/11 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
一个JavaScript变量声明的知识点
2013/10/28 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
jQuery中map()方法用法实例
2015/01/06 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
jquery延迟对象解析
2016/10/26 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
js实现3D旋转效果
2020/08/18 Javascript
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
Python csv文件记录流程代码解析
2020/07/16 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
生产内勤岗位职责
2013/12/07 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
出国留学导师推荐信
2015/03/26 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书