Major bug fix in --read-file option and minor code refactoring.

This commit is contained in:
Bernardo Damele 2009-07-09 11:50:15 +00:00
parent cb3d2bac16
commit 8096a37940

View File

@ -48,24 +48,13 @@ class Filesystem:
def __unbase64String(self, base64Str): def __unbase64String(self, base64Str):
unbase64Str = ""
if isinstance(base64Str, (list, tuple, set)):
for chunk in base64Str:
if isinstance(chunk, (list, tuple, set)):
chunk = chunk[0]
unbase64Str += "%s\n" % chunk.decode("base64")
else:
unbase64Str = "%s\n" % base64Str.decode("base64") unbase64Str = "%s\n" % base64Str.decode("base64")
return unbase64Str return unbase64Str
def __unhexString(self, hexStr): def __unhexString(self, hexStr):
unhexStr = "" if len(hexStr) % 2 != 0:
if ( len(hexStr) % 2 ) != 0:
errMsg = "for some reasons sqlmap retrieved an odd-length " errMsg = "for some reasons sqlmap retrieved an odd-length "
errMsg += "hexadecimal string which it is not able to convert " errMsg += "hexadecimal string which it is not able to convert "
errMsg += "to raw string" errMsg += "to raw string"
@ -73,16 +62,7 @@ class Filesystem:
return hexStr return hexStr
if isinstance(hexStr, (list, tuple, set)): return binascii.unhexlify(hexStr)
for chunk in hexStr:
if isinstance(chunk, (list, tuple, set)):
chunk = chunk[0]
unhexStr += binascii.unhexlify(chunk)
else:
unhexStr = binascii.unhexlify(hexStr)
return unhexStr
def __binDataToScr(self, binaryData, chunkName): def __binDataToScr(self, binaryData, chunkName):
@ -301,10 +281,20 @@ class Filesystem:
fileContent = self.stackedReadFile(rFile) fileContent = self.stackedReadFile(rFile)
if fileContent == None: if fileContent in ( None, "" ):
self.cleanup(onlyFileTbl=True) self.cleanup(onlyFileTbl=True)
return return
elif isinstance(fileContent, (list, tuple, set)):
newFileContent = ""
for chunk in fileContent:
if isinstance(chunk, (list, tuple, set)):
chunk = chunk[0]
newFileContent += chunk
fileContent = newFileContent
if kb.dbms in ( "MySQL", "Microsoft SQL Server" ): if kb.dbms in ( "MySQL", "Microsoft SQL Server" ):
fileContent = self.__unhexString(fileContent) fileContent = self.__unhexString(fileContent)