mirror of
				https://github.com/sqlmapproject/sqlmap.git
				synced 2025-10-26 05:31:04 +03:00 
			
		
		
		
	minor bug fix for PostgreSQL --file-read
This commit is contained in:
		
							parent
							
								
									bd89ade02f
								
							
						
					
					
						commit
						279f6cb9ce
					
				|  | @ -40,9 +40,6 @@ class Filesystem: | ||||||
|             lengthQuery = "SELECT LENGTH(LOAD_FILE('%s'))" % remoteFile |             lengthQuery = "SELECT LENGTH(LOAD_FILE('%s'))" % remoteFile | ||||||
| 
 | 
 | ||||||
|         elif Backend.isDbms(DBMS.PGSQL): |         elif Backend.isDbms(DBMS.PGSQL): | ||||||
|             if fileRead: |  | ||||||
|                 lengthQuery = True |  | ||||||
|             else: |  | ||||||
|                 lengthQuery = "SELECT LENGTH(data) FROM pg_largeobject WHERE loid=%d" % self.oid |                 lengthQuery = "SELECT LENGTH(data) FROM pg_largeobject WHERE loid=%d" % self.oid | ||||||
| 
 | 
 | ||||||
|         elif Backend.isDbms(DBMS.MSSQL): |         elif Backend.isDbms(DBMS.MSSQL): | ||||||
|  | @ -53,32 +50,36 @@ class Filesystem: | ||||||
| 
 | 
 | ||||||
|         localFileSize = os.path.getsize(localFile) |         localFileSize = os.path.getsize(localFile) | ||||||
| 
 | 
 | ||||||
|         logger.debug("checking the length of the remote file %s" % remoteFile) |         if fileRead and Backend.isDbms(DBMS.PGSQL): | ||||||
|         remoteFileSize = inject.getValue(lengthQuery, resumeValue=False, expected=EXPECTED.INT, charsetType=CHARSET_TYPE.DIGITS) |             logger.info("length of read file %s cannot be checked on PostgreSQL" % remoteFile) | ||||||
|         sameFile = None |             sameFile = True | ||||||
| 
 |  | ||||||
|         if isNumPosStrValue(remoteFileSize): |  | ||||||
|             remoteFileSize = long(remoteFileSize) |  | ||||||
|             sameFile = False |  | ||||||
| 
 |  | ||||||
|             if localFileSize == remoteFileSize: |  | ||||||
|                 sameFile = True |  | ||||||
|                 infoMsg = "the local file %s and the remote file " % localFile |  | ||||||
|                 infoMsg += "%s have the same size" % remoteFile |  | ||||||
|             elif remoteFileSize > localFileSize: |  | ||||||
|                 infoMsg = "the remote file %s is larger than " % remoteFile |  | ||||||
|                 infoMsg += "the local file %s" % localFile |  | ||||||
|             else: |  | ||||||
|                 infoMsg = "the remote file %s is smaller than " % remoteFile |  | ||||||
|                 infoMsg += "file '%s' (%d bytes)" % (localFile, localFileSize) |  | ||||||
| 
 |  | ||||||
|             logger.info(infoMsg) |  | ||||||
|         else: |         else: | ||||||
|             sameFile = False |             logger.debug("checking the length of the remote file %s" % remoteFile) | ||||||
|             warnMsg = "it looks like the file has not been written, this " |             remoteFileSize = inject.getValue(lengthQuery, resumeValue=False, expected=EXPECTED.INT, charsetType=CHARSET_TYPE.DIGITS) | ||||||
|             warnMsg += "can occur if the DBMS process' user has no write " |             sameFile = None | ||||||
|             warnMsg += "privileges in the destination path" | 
 | ||||||
|             logger.warn(warnMsg) |             if isNumPosStrValue(remoteFileSize): | ||||||
|  |                 remoteFileSize = long(remoteFileSize) | ||||||
|  |                 sameFile = False | ||||||
|  | 
 | ||||||
|  |                 if localFileSize == remoteFileSize: | ||||||
|  |                     sameFile = True | ||||||
|  |                     infoMsg = "the local file %s and the remote file " % localFile | ||||||
|  |                     infoMsg += "%s have the same size" % remoteFile | ||||||
|  |                 elif remoteFileSize > localFileSize: | ||||||
|  |                     infoMsg = "the remote file %s is larger than " % remoteFile | ||||||
|  |                     infoMsg += "the local file %s" % localFile | ||||||
|  |                 else: | ||||||
|  |                     infoMsg = "the remote file %s is smaller than " % remoteFile | ||||||
|  |                     infoMsg += "file '%s' (%d bytes)" % (localFile, localFileSize) | ||||||
|  | 
 | ||||||
|  |                 logger.info(infoMsg) | ||||||
|  |             else: | ||||||
|  |                 sameFile = False | ||||||
|  |                 warnMsg = "it looks like the file has not been written, this " | ||||||
|  |                 warnMsg += "can occur if the DBMS process' user has no write " | ||||||
|  |                 warnMsg += "privileges in the destination path" | ||||||
|  |                 logger.warn(warnMsg) | ||||||
| 
 | 
 | ||||||
|         return sameFile |         return sameFile | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user