Fix (and some hidden bug fixes/improvements) regarding an Issue #317

This commit is contained in:
Miroslav Stampar
2012-12-21 10:51:35 +01:00
parent 352e516400
commit 35728fa443
4 changed files with 31 additions and 23 deletions

View File

@@ -23,6 +23,7 @@ from lib.core.enums import EXPECTED
from lib.core.enums import PAYLOAD
from lib.core.exception import SqlmapNoneDataException
from lib.core.exception import SqlmapUnsupportedFeatureException
from lib.core.settings import UNICODE_ENCODING
from lib.request import inject
from plugins.generic.filesystem import Filesystem as GenericFilesystem
@@ -337,7 +338,7 @@ class Filesystem(GenericFilesystem):
tmpPath = posixToNtSlashes(conf.tmpPath)
dFile = posixToNtSlashes(dFile)
wFilePointer = codecs.open(wFile, "rb")
wFilePointer = codecs.open(wFile, "rb", UNICODE_ENCODING)
wFileContent = wFilePointer.read()
wFilePointer.close()

View File

@@ -25,6 +25,7 @@ from lib.core.enums import CHARSET_TYPE
from lib.core.enums import EXPECTED
from lib.core.enums import PAYLOAD
from lib.core.exception import SqlmapUndefinedMethod
from lib.core.settings import UNICODE_ENCODING
from lib.request import inject
class Filesystem:
@@ -112,7 +113,7 @@ class Filesystem:
"""
retVal = []
with codecs.open(fileName, "rb") as f:
with codecs.open(fileName, "rb", UNICODE_ENCODING) as f:
content = f.read().encode(encoding).replace("\n", "")
if not single:
@@ -230,19 +231,24 @@ class Filesystem:
if fileContent is not None:
fileContent = decodeHexValue(fileContent)
localFilePath = dataToOutFile(remoteFile, fileContent)
if not Backend.isDbms(DBMS.PGSQL):
self.cleanup(onlyFileTbl=True)
if fileContent:
localFilePath = dataToOutFile(remoteFile, fileContent)
sameFile = self.askCheckReadFile(localFilePath, remoteFile)
if not Backend.isDbms(DBMS.PGSQL):
self.cleanup(onlyFileTbl=True)
if sameFile is True:
localFilePath += " (same file)"
elif sameFile is False:
localFilePath += " (size differs from remote file)"
sameFile = self.askCheckReadFile(localFilePath, remoteFile)
localFilePaths.append(localFilePath)
if sameFile is True:
localFilePath += " (same file)"
elif sameFile is False:
localFilePath += " (size differs from remote file)"
localFilePaths.append(localFilePath)
else:
errMsg = "no data retrieved"
logger.error(errMsg)
return localFilePaths