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 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