做软件贵还是做网站贵,网站备案初审时间,淘宝网站建设可行性分析报告,来宾市住房和城乡建设局网站1|0前言 在PHP语言中#xff0c;单引号和双引号都可以表示一个字符串#xff0c;但是对于双引号来说#xff0c;可能会对引号内的内容进行二次解释#xff0c;这就可能会出现安全问题。 条件#xff1a;php版本5.5 2|0正文
举个简单例子
?php
$a 1;
$b 2;
ec… 1|0前言 在PHP语言中单引号和双引号都可以表示一个字符串但是对于双引号来说可能会对引号内的内容进行二次解释这就可能会出现安全问题。 条件php版本5.5 2|0正文
举个简单例子
?php
$a 1;
$b 2;
echo $a$b;//输出结果为$a$b
echo $a$b;//输出结果为12
?可以看到这两个输出的结果并不相同。
在双引号中倘若有${}出现那么{}内的内容将被当做代码块来执行。 可以看到成功执行了phpinfo() 试想一下倘若在一个cms的后台可以修改数据库的配置文件且配置文件中的值用双引号包括我们虽然也可以直接闭合代码达到getshell的后果但是如果cms对传递的参数进行了addlashes()处理的话我们就无法去闭合代码了但这时我们可以传入${命令}就可以达到getshell的目的。 现在让我们来修改一下代码让我们不只能输出phpinfo
?php echo ${assert($_POST[a])};? //是用来防止输出错误信息的菜刀成功连接 3|0总结
本文简单记录了双引号可能会引发的代码执行的情况 对于这种漏洞的防御一定要明确单引号与双引号的区别所在不要简单认为两者是互相可以替代的在平时的代码书写中能只用单引号一定不要用双引号毕竟单引号的解释时间也比双引号少得多代码运行相对更快。