欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

extract php漏洞

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

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

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

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

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

然而這個函數(shù)同樣可以引發(fā)安全問題。代碼如下:

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

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

舉個例子:

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

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

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函數(shù)會將filename作為變量名稱,將POST請求中的值導入到符號表中,而后面的require_once($filename)則會將攻擊者輸入的PHP文件引入到當前腳本中執(zhí)行。

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

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