色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

extract php漏洞

劉柏宏1年前8瀏覽0評論

在網絡安全領域中,安全研究人員經常會遇到PHP漏洞的問題。其中extract PHP漏洞就是其中之一,這也是一個相對常見的漏洞。

首先我們來看一下extract的作用:

$someArray = array(
'color' =>'blue',
'size'  =>'medium',
'shape' =>'round'
);
extract($someArray);
echo $color . ' ' . $size . ' ' . $shape;

執行上面的代碼,可以得到輸出blue medium round。其中extract函數會將數組的key作為變量名,value作為變量值,并將其導入到當前的符號表中。這樣的話就避免了在進行的工作量大且繁瑣的語法操作,可以讓PHP程序的開發者更加簡單而快捷地完成任務。

然而這個函數同樣可以引發安全問題。代碼如下:

$someArray = array(
'color' =>'blue',
'size'  =>'medium',
'shape' =>'round'
);
extract($_POST);
echo $color . ' ' . $size . ' ' . $shape;

這段代碼的問題就在于使用了extract函數,并直接將$_POST數組導入到了當前的符號表中。如果攻擊者在提交的POST請求中添加了一些非法的key-value關系,就會將這些數據導入到符號表中,這樣就可能導致一些安全問題的出現。

舉個例子:

// 文件名為test.php
extract($_POST);
require_once($filename);

攻擊者可以構造一個非法的POST請求,使其參數中包含filename參數,如下所示:

POST /test.php HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 23
filename=index.php&x=1

其中x=1是為了繞過空格的處理,讓攻擊者提交的文件名可以被正確地解析。此時extract函數會將filename作為變量名稱,將POST請求中的值導入到符號表中,而后面的require_once($filename)則會將攻擊者輸入的PHP文件引入到當前腳本中執行。

這樣一來,攻擊者就可以通過構造POST請求成功地將惡意腳本引入到服務器端,造成危害或者泄露敏感信息。

因此,在使用extract函數時需要非常謹慎,避免將未經過濾的、不可信的數據導入到符號表中,否則可能會引發嚴重的漏洞。