去年发现3个直接信任用户输入BSOD漏洞,今天在看雪上又发现这个。
原文:http://bbs.pediy.com/showthread.php?t=179059
两处很2的逻辑
1:
if( !IsFileDirectory( hFile ) || !(bResult = IsDirectoryInQQSubBinDirTbl( FileName,MAX_UNICODE_STRING_CHARS)) && !(bResult = IsDirectoryInMyProtectedDataFileDir( ((PFILE_RENAME_INFORMATION)FileInformation)->FileName,bytes / sizeof(WCHAR))) ) { AdjustPathString( ((PFILE_RENAME_INFORMATION)FileInformation)->FileName, (USHORT)(bytes / sizeof(WCHAR))); MakeNewQQPathDir( FileName, ((PFILE_RENAME_INFORMATION)FileInformation)->FileName, bytes / sizeof(WCHAR), NewQQPathDir ); }
||操作符,用的好很飘逸,不少php就用这个操作符对变量检测并赋值,QQ用的比较很2。保护思路应该为:如果是目录并且是QQ目录,就创建新路径。那么直接"IsFileDirectory &&",一点事没有。
2.路径匹配
if(lengthOfOldDir <= wcslen( g_PathRegValue ) &&
!wcsnicmp( OldDir,g_PathRegValue,lengthOfOldDir ))
用户输入多长,就匹配多长,太不正经了。