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 相关文章推荐
基于mysql的论坛(4)
Oct 09 PHP
在普通HTTP上安全地传输密码
Jul 21 PHP
php xfocus防注入资料
Apr 27 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
php 伪静态之IIS篇
Jun 02 PHP
php截取字符串函数分享
Feb 02 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
Apr 24 PHP
PHP共享内存使用与信号控制实例分析
May 09 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 PHP
PDO实现学生管理系统
Mar 21 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
长波有什么东西
2021/03/01 无线电
文章推荐系统(二)
2006/10/09 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
IE下js调试工具Companion.JS
2010/10/15 Javascript
JavaScript OOP面向对象介绍
2010/12/02 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
2013/04/15 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
[01:31]完美与DOTA2历程
2014/07/31 DOTA
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
python中正则的使用指南
2016/12/04 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
修理厂厂长岗位职责
2014/01/30 职场文书
乔迁之喜主持词
2014/03/27 职场文书
低碳环保倡议书
2014/04/14 职场文书
学习张林森心得体会
2014/09/10 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
研讨会致辞
2015/07/31 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python