国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php substr_replace替換指定位置字符與內存破壞漏洞

2024-05-04 21:49:27
字體:
來源:轉載
供稿:網友

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()

參數:被替換的內容,替換內容,起始位,替換長度,實例代碼如下:

  1. function substr_replace(sourcecon,repcon,startx,lenx) 
  2.    dim reped 
  3.    reped = mid(sourcecon,startx,lenx) '取出原內容同樣長度 
  4.    dim scleftx,scleft//開源軟件:Vevb.com 
  5.    scleftx = startx-1 
  6.    if scleftx<1 then 
  7.     scleft = "" 
  8.    else 
  9.     scleft = left(sourcecon,scleftx) 
  10.    end if 
  11.    substr_replace = replace(sourcecon,reped,repcon,startx,1) 
  12.    substr_replace = scleft&substr_replace 
  13. 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()函數存在信息泄漏問題:

  1. php_function(substr_replace) 
  2.     ... 
  3.     if (zend_parse_parameters(zend_num_args() tsrmls_cc, "zzz|z", &str, &repl, &from, &len) == failure) { 
  4.         return
  5.     } 
  6.      
  7.     if (z_type_pp(str) != is_array) { 
  8.         convert_to_string_ex(str); 
  9.     } 
  10.     if (z_type_pp(repl) != is_array) { 
  11.         convert_to_string_ex(repl); 
  12.     } 
  13.     if (z_type_pp(from) != is_array) { 
  14.         convert_to_long_ex(from); 
  15.     } 
  16.     if (argc > 3) { 
  17.         separate_zval(len); 
  18.         if (z_type_pp(len) != is_array) { 
  19.             convert_to_long_ex(len); 
  20.             l = z_lval_pp(len); 
  21.         } 
  22.     } else { 
  23.         if (z_type_pp(str) != is_array) { 
  24.             l = z_strlen_pp(str); 
  25.         } 
  26.     } 
  27.     if (z_type_pp(str) == is_string) { 
  28.         if ( 
  29.             (argc == 3 && z_type_pp(from) == is_array) ||  
  30.             (argc == 4 && z_type_pp(from) != z_type_pp(len)) 
  31.         ) { 
  32.             php_error_docref(null tsrmls_cc, e_warning, "'from' and 'len' should be of same type - numerical or array "); 
  33.             return_stringl(z_strval_pp(str), z_strlen_pp(str), 1);       
  34.         } 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永仁县| 乌恰县| 西青区| 眉山市| 政和县| 芒康县| 白银市| 白沙| 台中县| 龙陵县| 鹤壁市| 屏东市| 金川县| 方正县| 凤山市| 扬中市| 五家渠市| 循化| 文昌市| 西宁市| 贡山| 都安| 定兴县| 青田县| 宿州市| 南陵县| 东乌| 许昌县| 平邑县| 遵化市| 墨玉县| 凭祥市| 平遥县| 都匀市| 偏关县| SHOW| 张掖市| 潞西市| 南雄市| 都兰县| 罗田县|