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