php escapeshellcmd多字節(jié)編碼漏洞_PHP教程
推薦:詳細(xì)講解PHP中緩存技術(shù)的應(yīng)用PHP,一門(mén)最近幾年興起的web設(shè)計(jì)腳本語(yǔ)言,由于它的強(qiáng)大和可伸縮性,近幾年來(lái)得到長(zhǎng)足的發(fā)展,php相比傳統(tǒng)的asp網(wǎng)站,在速度上有絕對(duì)的優(yōu)勢(shì),想mssql轉(zhuǎn)6萬(wàn)條數(shù)據(jù)php如需要40秒,asp不下2分鐘.但是,由于
漏洞公告在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)都可能受此影響,影響還是非常大的,國(guó)內(nèi)的虛擬主機(jī)應(yīng)該是通殺的,在測(cè)試完這個(gè)漏洞之后,發(fā)現(xiàn)還是十分有意思的,以前也有過(guò)對(duì)這種類型安全漏洞的研究,于是就把相關(guān)的漏洞解釋和一些自己的想法都寫(xiě)出來(lái),也希望國(guó)內(nèi)的一些有漏洞的平臺(tái)能迅速做出響應(yīng),修補(bǔ)漏洞。
這個(gè)漏洞出在php的用來(lái)轉(zhuǎn)義命令行字符串的函數(shù)上,這些函數(shù)底層是用的php_escape_shell_cmd這個(gè)函數(shù)的,我們先來(lái)看看他的處理過(guò)程:
/*{{{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;
}
/*}}}*/
分享:利用PHP V5開(kāi)發(fā)多任務(wù)應(yīng)用程序許多 PHP 開(kāi)發(fā)人員認(rèn)為,由于標(biāo)準(zhǔn)的 PHP 缺少線程功能,因此實(shí)際 PHP 應(yīng)用程序不可能執(zhí)行多任務(wù)處理。例如,如果應(yīng)用程序需要其他 Web 站點(diǎn)的信息,那么在遠(yuǎn)程檢索完成之前它都必須停止。這是錯(cuò)
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
PHP教程Rss訂閱編程教程搜索
PHP教程推薦
- 談PHP框架對(duì)PHP發(fā)展的影響
- 網(wǎng)頁(yè)實(shí)例:詳細(xì)介紹用PHP來(lái)編寫(xiě)網(wǎng)頁(yè)記數(shù)器
- PHP程序中使用session錯(cuò)誤調(diào)試問(wèn)題
- 用php odbc access數(shù)據(jù)庫(kù)來(lái)操作函數(shù)
- 黑客隱藏PHP文件后門(mén)的技巧
- 在PHP中設(shè)置、使用、刪除Cookie的解決方法
- PHP session_start()問(wèn)題解疑(詳細(xì)介紹)
- PHP CLI模式下的多進(jìn)程應(yīng)用分析
- 《PHP設(shè)計(jì)模式介紹》第十四章 動(dòng)態(tài)記錄模式
- PHP生成縮略圖失真/不清晰的解決方法
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-php escapeshellcmd多字節(jié)編碼漏洞
。