您现在的位置是:群英 > 开发技术 > PHP语言
eval函数的执行是否需要双引号包括?
Admin发表于 2021-11-19 18:07:401692 次浏览

    这篇文章给大家分享的是eval函数的相关内容,这个问题一直困扰我许久eval函数的执行是否需要双引号包括?现在终于解决清楚了,因此分享给大家做个参考,感兴趣的朋友接下来一起跟随小编看看吧。

eval的执行是否需要双引号包括:

    先看三个命令:

A:<?php eval(system(dir))?>
B:<?php
	$cmd="system(dir)"; 
	eval($cmd)?>

    A结果:

    B结果:

    报错

    思考:

    同样是一个命令,为什么会出现如此区别,询问了其他师傅得知:eval执行的是变量的值的时候,该变量值需要闭合,也就是必须是一个完整的语句,需要用分号结尾。根据这个道原理我们改一下上面的命令看看:

<?php
	$cmd="system(dir);"; 
	eval($cmd)?>

    结果:


发现是可以执行的。

后话:

    关于这个点,还需要补充一个:

    内置函数在eval里面直接执行时不需要加分号,看两个命令就知道了:

eval(system(dir));
eval(system(dir););

    内置函数不需要加分号,其实我觉得加不加分号都一样,因为加了分号就要加引号,引号也带有解析的意思

理解一下命令执行中的闭合:

    看代码:

eval(system(dir));
eval(system(dir););

    看看结果:

    这里可以并且后面语句是不影响解析的

<?php
	eval("system(dir);?>xyusaiqeqcyuqqwdnoqcq");
	?>

    我们这里都是不影响的,为什么?

    如果我们是简单的闭合eval这个命令

    那我们的playload应该是:

<?php 
	eval("system(dir));?>xyusaiqeqcyuqqwdnoqcq");
?>
上面的代码我错误的理解成:
<?php 
	eval("system(dir)");?>
	xyusaiqeqcyuqqwdnoqcq");
?>

    之前我错误的以为是这样的闭合的,但是后来发现我错了,直到在有一道题目中我发现这样闭合不了,后面询问了一下其他师傅,得到答案:

    eval()这个函数可以理解成我们是将eval(字符串)这里面的字符串放到了一个新的php里面去运行,这个新的php本来就又 <?php 所以当我们传入 system(dir);?>dasdas的时候,?>就以及阶段了php代码

    关于eval函数的相关内容就介绍到这,对于eval函数的执行是否需要双引号包括,相信大家也都清楚了吧。最后,希望本文能对大家有帮助,想要了解更多大家可以关注其它的相关文章。

文本转载自脚本之家

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: eval函数
相关信息推荐
2021-12-20 17:47:42 
摘要:这篇文章给大家分享的是C语言实现对文件操作的方法,下文将什么是文件、为什么要使用文件、以及文件的操作等等,对大家学习和理解C语言中的文件操作有一定的帮助,有需要的朋友可以参考了解,那么接下来一起跟随小编看看吧。
2022-02-08 20:09:45 
摘要:这篇文章给大家分享的是Java常用代码段。小编觉得挺实用的,因此分享给大家做个参考,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
2022-07-14 17:48:52 
摘要:php中的字符串合并函数是“implode()”。implode()函数可以将一个一维数组转化为字符串,将数组元素合并为一个字符串并返回,语法“implode($glue, $array)”;参数“$glue”可省略,规定数组元素之间放置的内容,即连接符,用于将数组每个元素连接在一起,默认情况下参数“$glue”为空字符串。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部