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

首頁 > 開發(fā) > PHP > 正文

php escapeshellcmd多字節(jié)編碼漏洞

2024-05-04 21:51:05
字體:
供稿:網(wǎng)友

漏洞公告在http://www.sektioneins.de/advisories/SE-2008-03.txt

PHP 5 <= 5.2.5

PHP 4 <= 4.4.8

一些允許如GBK,EUC-KR, SJIS等寬字節(jié)字符集的系統(tǒng)都可能受此影響,影響還是非常大的,國內(nèi)的虛擬主機應(yīng)該是通殺的,在測試完這個漏洞之后,發(fā)現(xiàn)還是十分有意思的,以前也有過對這種類型安全漏洞的研究,于是就把相關(guān)的漏洞解釋和一些自己的想法都寫出來,也希望國內(nèi)的一些有漏洞的平臺能迅速做出響應(yīng),修補漏洞。

這個漏洞出在php的用來轉(zhuǎn)義命令行字符串的函數(shù)上,這些函數(shù)底層是用的php_escape_shell_cmd這個函數(shù)的,我們先來看看他的處理過程:

 

 /*{{{php_escape_shell_cmd
Escapeallcharsthatcouldpossiblybeusedto
breakoutofashellcommand
Thisfunctionemalloc'sastringandreturnsthepointer.
Remembertoefreeitwhendonewithit.
*NOT*safeforbinarystrings
*/
char*php_escape_shell_cmd(char*str){
registerintx,y,l;
char*cmd;
char*p=NULL;
l=strlen(str);
cmd=safe_emalloc(2,l,1);
for(x=0,y=0;x<l;x ){
switch(str[x]){
case'"':
case''':
#ifndefPHP_WIN32
if(!p&&(p=memchr(str x 1,str[x],l-x-1))){
/*noop*/
}elseif(p&&*p==str[x]){
p=NULL;
}else{
cmd[y ]='';
}
cmd[y ]=str[x];
break;
#endif
case'#':/*Thisischaracter-setindependent*/
case'&':
case';':
case'`':
case'|':
case'*':
case'?':
case'~':
case'<':
case'>':
case'^':
case'(':
case')':
case'[':
case']':
case'{':
case'}':
case'$':
case'':
case'x0A':/*excludingthesetwo*/
case'xFF':
#ifdefPHP_WIN32
/*sinceWindowsdoesnotallowustoescapethesechars,justremovethem*/
case'%':
cmd[y ]='';
break;
#endif
cmd[y ]='';
/*fall-through*/
default:
cmd[y ]=str[x];
}
}
cmd[y]='';
returncmd;
}
/*}}}*/

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 红桥区| 黄山市| 平顶山市| 平陆县| 云南省| 天门市| 康平县| 淳化县| 喀喇| 乡宁县| 清水河县| 布拖县| 怀宁县| 白山市| 重庆市| 浏阳市| 泊头市| 崇仁县| 洛隆县| 土默特右旗| 盐津县| 永靖县| 汝南县| 连平县| 武功县| 兴业县| 天镇县| 泾阳县| 乌兰浩特市| 张家界市| 中山市| 怀来县| 固原市| 长丰县| 碌曲县| 周至县| 内乡县| 大悟县| 海城市| 略阳县| 滁州市|