php substr_replace替換指定位置字元與記憶體破壞漏洞_PHP教程

來源:互聯網
上載者:User
php教程 substr_replace替換指定位置字元與記憶體破壞漏洞

提示和注釋
注釋:如果 start 是負數且 length 小於等於 start,則 length 為 0。

$username = "zongzi";
echo substr_replace($username,'**','1','2');

定義和用法
substr_replace() 函數把字串的一部分替換為另一個字串。

文法
substr_replace(string,replacement,start,length)參數 描述
string 必需。規定要檢查的字串。
replacement 必需。規定要插入的字串。
start 必需。規定在字串的何處開始替換。

正數 - 在第 start 個位移量開始替換
負數 - 在從字串結尾的第 start 個位移量開始替換
0 - 在字串中的第一個字元處開始替換

charlist 可選。規定要替換多少個字元。

正數 - 被替換的字串長度
負數 - 從字串末端開始的被替換字元數
0 - 插入而非替換

功能同 php的substr_replace()

'參數:被替換的內容,替換內容,起始位,替換長度

function substr_replace(sourcecon,repcon,startx,lenx)
dim reped
reped = mid(sourcecon,startx,lenx) '取出原內容同樣長度
dim scleftx,scleft
scleftx = startx-1
if scleftx<1 then
scleft = ""
else
scleft = left(sourcecon,scleftx)
end if
substr_replace = replace(sourcecon,reped,repcon,startx,1)
substr_replace = scleft&substr_replace
end function

()中斷記憶體破壞漏洞
bugraq id:
cve id:cve-2010-2190
cncve id:cncve-20102190

漏洞發布時間:2010-05-31
漏洞更新時間:2010-06-28

漏洞起因
設計錯誤
危險等級


影響系統
php 5.2 <= 5.2.13
php 5.3 <= 5.3.2

不受影響系統

危害
遠程攻擊者可以利用漏洞泄漏敏感資訊。

攻擊所需條件
攻擊者必須訪問使用substr_replace()函數的應用程式。

漏洞資訊
php是一款流行的網路程式設計語言。
php的substr_replace()函數存在資訊洩漏問題:

php_function(substr_replace)
{
...
if (zend_parse_parameters(zend_num_args() tsrmls_cc, "zzz|z", &str, &repl, &from, &len) == failure) {
return;
}

if (z_type_pp(str) != is_array) {
convert_to_string_ex(str);
}
if (z_type_pp(repl) != is_array) {
convert_to_string_ex(repl);
}
if (z_type_pp(from) != is_array) {
convert_to_long_ex(from);
}
if (argc > 3) {
separate_zval(len);
if (z_type_pp(len) != is_array) {
convert_to_long_ex(len);
l = z_lval_pp(len);
}
} else {
if (z_type_pp(str) != is_array) {
l = z_strlen_pp(str);
}
}
if (z_type_pp(str) == is_string) {
if (
(argc == 3 && z_type_pp(from) == is_array) ||
(argc == 4 && z_type_pp(from) != z_type_pp(len))
) {
php_error_docref(null tsrmls_cc, e_warning, "'from' and 'len' should be of same type - numerical or array ");
return_stringl(z_strval_pp(str), z_strlen_pp(str), 1);
}

使用不同類型的‘from’和'len'參數調用substr_replace()函數,會觸發e_warning錯誤。如果php沒有刪除調用時通過引用傳遞功能,使用者空間錯誤處理器會使用這個中斷更改'str'參數類型。如果'str'類型更改為整數類型可導致泄漏任意記憶體,如果'str'更改為數組,允許泄漏使用重要記憶體位移的雜湊表。


http://www.bkjia.com/PHPjc/445368.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/445368.htmlTechArticlephp教程 substr_replace替換指定位置字元與記憶體破壞漏洞 提示和注釋 注釋:如果 start 是負數且 length 小於等於 start,則 length 為 0。 $username =...

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.