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+mysql实现无限级分类 | 树型显示分类关系
Nov 19 PHP
PHP加速 eAccelerator配置和使用指南
Jun 05 PHP
PHP 木马攻击防御技巧
Jun 13 PHP
PHP高级OOP技术演示
Aug 27 PHP
关于php curl获取301或302转向的网址问题的解决方法
Jun 02 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
php 下载保存文件保存到本地的两种实现方法
Aug 12 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
Jul 22 PHP
PHP数据库处理封装类实例
Dec 24 PHP
PHP读取XML格式文件的方法总结
Feb 27 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
Feb 27 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
Nov 04 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
加速XP搜索功能堪比vista
2007/03/22 PHP
cmd下运行php脚本
2008/11/25 PHP
php自动加载机制的深入分析
2013/06/08 PHP
Eclipse的PHP插件PHPEclipse安装和使用
2014/07/20 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
vue实现验证用户名是否可用
2021/01/20 Vue.js
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
[04:29]【TI9采访】OG.N0tail在胜者组决赛后接受采访
2019/08/25 DOTA
[43:41]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python中的pass语句使用方法讲解
2015/05/14 Python
python实现整数的二进制循环移位
2019/03/08 Python
pandas中ix的使用详细讲解
2020/03/09 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
ASP.NET Core中的配置详解
2021/02/05 Python
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
协议书与合同的区别
2014/04/18 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript