mirror of
				https://github.com/sqlmapproject/sqlmap.git
				synced 2025-10-31 07:57:47 +03:00 
			
		
		
		
	fix for that takeover bug Ethan Robish posted (Windows/PHP)
This commit is contained in:
		
							parent
							
								
									7d3a200ab8
								
							
						
					
					
						commit
						1bcec80e95
					
				|  | @ -34,10 +34,8 @@ import ntpath | ||||||
| import posixpath | import posixpath | ||||||
| import subprocess | import subprocess | ||||||
| 
 | 
 | ||||||
| from StringIO import StringIO |  | ||||||
| from tempfile import NamedTemporaryFile | from tempfile import NamedTemporaryFile | ||||||
| from tempfile import mkstemp | from tempfile import mkstemp | ||||||
| from xml.sax import parse |  | ||||||
| 
 | 
 | ||||||
| from extra.cloak.cloak import decloak | from extra.cloak.cloak import decloak | ||||||
| from lib.contrib import magic | from lib.contrib import magic | ||||||
|  | @ -255,6 +253,8 @@ def getDocRoot(webApi=None): | ||||||
|             if isWindowsPath(absFilePath): |             if isWindowsPath(absFilePath): | ||||||
|                 absFilePathWin = posixToNtSlashes(absFilePath) |                 absFilePathWin = posixToNtSlashes(absFilePath) | ||||||
|                 absFilePath    = ntToPosixSlashes(absFilePath[2:]) |                 absFilePath    = ntToPosixSlashes(absFilePath[2:]) | ||||||
|  |             elif isWindowsDriveLetterPath(absFilePath): #e.g. C:/xampp/htdocs | ||||||
|  |                 absFilePath    = absFilePath[2:] | ||||||
| 
 | 
 | ||||||
|             if pagePath in absFilePath: |             if pagePath in absFilePath: | ||||||
|                 index   = absFilePath.index(pagePath) |                 index   = absFilePath.index(pagePath) | ||||||
|  | @ -308,7 +308,7 @@ def getDirs(webApi=None): | ||||||
|             if absFilePath: |             if absFilePath: | ||||||
|                 directory = directoryPath(absFilePath) |                 directory = directoryPath(absFilePath) | ||||||
|                 if isWindowsPath(directory): |                 if isWindowsPath(directory): | ||||||
|                     directory = directory.replace('\\', '/') |                     ntToPosixSlashes(directory) | ||||||
|                 if directory == '/': |                 if directory == '/': | ||||||
|                     continue |                     continue | ||||||
|                 directories.add(directory) |                 directories.add(directory) | ||||||
|  | @ -978,7 +978,7 @@ def urlEncodeCookieValues(cookieStr): | ||||||
| 
 | 
 | ||||||
| def directoryPath(path): | def directoryPath(path): | ||||||
|     retVal = None |     retVal = None | ||||||
|     if isWindowsPath(path): |     if isWindowsDriveLetterPath(path): | ||||||
|         retVal = ntpath.dirname(path) |         retVal = ntpath.dirname(path) | ||||||
|     else: |     else: | ||||||
|         retVal = posixpath.dirname(path) |         retVal = posixpath.dirname(path) | ||||||
|  | @ -989,10 +989,8 @@ def normalizePath(path): | ||||||
|     This function must be called only after posixToNtSlashes() |     This function must be called only after posixToNtSlashes() | ||||||
|     and ntToPosixSlashes() |     and ntToPosixSlashes() | ||||||
|     """ |     """ | ||||||
| 
 |  | ||||||
|     retVal = None |     retVal = None | ||||||
| 
 |     if isWindowsDriveLetterPath(path): | ||||||
|     if isWindowsPath(path): |  | ||||||
|         retVal = ntpath.normpath(path) |         retVal = ntpath.normpath(path) | ||||||
|     else: |     else: | ||||||
|         retVal = posixpath.normpath(path) |         retVal = posixpath.normpath(path) | ||||||
|  | @ -1054,6 +1052,9 @@ def decloakToMkstemp(filepath, **kwargs): | ||||||
| def isWindowsPath(filepath): | def isWindowsPath(filepath): | ||||||
|     return re.search("\A[\w]\:\\\\", filepath) is not None |     return re.search("\A[\w]\:\\\\", filepath) is not None | ||||||
| 
 | 
 | ||||||
|  | def isWindowsDriveLetterPath(filepath): | ||||||
|  |     return re.search("\A[\w]\:", filepath) is not None | ||||||
|  | 
 | ||||||
| def posixToNtSlashes(filepath): | def posixToNtSlashes(filepath): | ||||||
|     return filepath.replace('/', '\\') |     return filepath.replace('/', '\\') | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -33,7 +33,7 @@ from lib.core.common import fileToStr | ||||||
| from lib.core.common import getDirs | from lib.core.common import getDirs | ||||||
| from lib.core.common import getDocRoot | from lib.core.common import getDocRoot | ||||||
| from lib.core.common import ntToPosixSlashes | from lib.core.common import ntToPosixSlashes | ||||||
| from lib.core.common import isWindowsPath | from lib.core.common import isWindowsDriveLetterPath | ||||||
| from lib.core.common import normalizePath | from lib.core.common import normalizePath | ||||||
| from lib.core.common import posixToNtSlashes | from lib.core.common import posixToNtSlashes | ||||||
| from lib.core.common import randomStr | from lib.core.common import randomStr | ||||||
|  | @ -177,9 +177,11 @@ class Web: | ||||||
|         for directory in directories: |         for directory in directories: | ||||||
|             # Upload the uploader agent |             # Upload the uploader agent | ||||||
|             self.__webFileInject(uploaderContent, uploaderName, directory) |             self.__webFileInject(uploaderContent, uploaderName, directory) | ||||||
|              |             requestDir  = ntToPosixSlashes(directory) | ||||||
|             requestDir  = ntToPosixSlashes(directory).replace(ntToPosixSlashes(kb.docRoot), "/") |             if requestDir[-1] != '/': | ||||||
|             if isWindowsPath(requestDir): |                 requestDir += '/' | ||||||
|  |             requestDir  = requestDir.replace(ntToPosixSlashes(kb.docRoot), "/") | ||||||
|  |             if isWindowsDriveLetterPath(requestDir): | ||||||
|                 requestDir = requestDir[2:] |                 requestDir = requestDir[2:] | ||||||
|             requestDir  = normalizePath(requestDir) |             requestDir  = normalizePath(requestDir) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user