diff --git a/lib/controller/handler.py b/lib/controller/handler.py
index c70397df1..7b21df61b 100644
--- a/lib/controller/handler.py
+++ b/lib/controller/handler.py
@@ -23,7 +23,6 @@ from lib.core.settings import ACCESS_ALIASES
from lib.core.settings import FIREBIRD_ALIASES
from lib.core.settings import MAXDB_ALIASES
from lib.core.settings import SYBASE_ALIASES
-from lib.core.settings import DB2_ALIASES
from plugins.dbms.mssqlserver import MSSQLServerMap
from plugins.dbms.mssqlserver.connector import Connector as MSSQLServerConn
@@ -43,8 +42,6 @@ from plugins.dbms.maxdb import MaxDBMap
from plugins.dbms.maxdb.connector import Connector as MaxDBConn
from plugins.dbms.sybase import SybaseMap
from plugins.dbms.sybase.connector import Connector as SybaseConn
-from plugins.dbms.db2 import DB2Map
-from plugins.dbms.db2.connector import Connector as DB2Conn
def setHandler():
"""
@@ -53,7 +50,7 @@ def setHandler():
"""
count = 0
- dbmsNames = ( "MySQL", "Oracle", "PostgreSQL", "Microsoft SQL Server", "SQLite", "Microsoft Access", "Firebird", "SAP MaxDB", "Sybase", "DB2" )
+ dbmsNames = ( "MySQL", "Oracle", "PostgreSQL", "Microsoft SQL Server", "SQLite", "Microsoft Access", "Firebird", "SAP MaxDB", "Sybase" )
dbmsObj = [
( MYSQL_ALIASES, MySQLMap, MySQLConn ),
( ORACLE_ALIASES, OracleMap, OracleConn ),
@@ -64,7 +61,6 @@ def setHandler():
( FIREBIRD_ALIASES, FirebirdMap, FirebirdConn ),
( MAXDB_ALIASES, MaxDBMap, MaxDBConn ),
( SYBASE_ALIASES, SybaseMap, SybaseConn ),
- ( DB2_ALIASES, DB2Map, DB2Conn )
]
if Backend.getIdentifiedDbms() is not None:
diff --git a/lib/core/agent.py b/lib/core/agent.py
index 253f73adf..143657685 100644
--- a/lib/core/agent.py
+++ b/lib/core/agent.py
@@ -407,7 +407,7 @@ class Agent:
if Backend.isDbms(DBMS.MYSQL):
concatenatedQuery = "CONCAT(%s,%s)" % (query1, query2)
- elif Backend.getIdentifiedDbms() in (DBMS.PGSQL, DBMS.ORACLE, DBMS.SQLITE, DBMS.DB2):
+ elif Backend.getIdentifiedDbms() in (DBMS.PGSQL, DBMS.ORACLE, DBMS.SQLITE):
concatenatedQuery = "%s||%s" % (query1, query2)
elif Backend.getIdentifiedDbms() in (DBMS.MSSQL, DBMS.SYBASE):
@@ -466,7 +466,7 @@ class Agent:
elif fieldsNoSelect:
concatenatedQuery = "CONCAT('%s',%s,'%s')" % (kb.misc.start, concatenatedQuery, kb.misc.stop)
- elif Backend.getIdentifiedDbms() in (DBMS.PGSQL, DBMS.ORACLE, DBMS.SQLITE, DBMS.DB2):
+ elif Backend.getIdentifiedDbms() in (DBMS.PGSQL, DBMS.ORACLE, DBMS.SQLITE):
if fieldsExists:
concatenatedQuery = concatenatedQuery.replace("SELECT ", "'%s'||" % kb.misc.start, 1)
concatenatedQuery += "||'%s'" % kb.misc.stop
@@ -643,7 +643,7 @@ class Agent:
limitStr = queries[Backend.getIdentifiedDbms()].limit.query % (num+1, num+1)
limitedQuery += " %s" % limitStr
- elif Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ elif Backend.isDbms(DBMS.ORACLE):
if " ORDER BY " in limitedQuery and "(SELECT " in limitedQuery:
orderBy = limitedQuery[limitedQuery.index(" ORDER BY "):]
limitedQuery = limitedQuery[:limitedQuery.index(" ORDER BY ")]
diff --git a/lib/core/common.py b/lib/core/common.py
index 44aa1e21a..61453bd53 100644
--- a/lib/core/common.py
+++ b/lib/core/common.py
@@ -2546,7 +2546,7 @@ def safeSQLIdentificatorNaming(name, isTable=False):
if not re.match(r"\A[A-Za-z0-9_]+\Z", parts[i]):
if Backend.getIdentifiedDbms() in (DBMS.MYSQL, DBMS.ACCESS):
parts[i] = "`%s`" % parts[i].strip("`")
- elif Backend.getIdentifiedDbms() in (DBMS.MSSQL, DBMS.ORACLE, DBMS.PGSQL, DBMS.DB2):
+ elif Backend.getIdentifiedDbms() in (DBMS.MSSQL, DBMS.ORACLE, DBMS.PGSQL):
parts[i] = "\"%s\"" % parts[i].strip("\"")
retVal = ".".join(parts)
@@ -2563,7 +2563,7 @@ def unsafeSQLIdentificatorNaming(name):
if isinstance(name, basestring):
if Backend.getIdentifiedDbms() in (DBMS.MYSQL, DBMS.ACCESS):
retVal = name.replace("`", "")
- elif Backend.getIdentifiedDbms() in (DBMS.MSSQL, DBMS.ORACLE, DBMS.PGSQL, DBMS.DB2):
+ elif Backend.getIdentifiedDbms() in (DBMS.MSSQL, DBMS.ORACLE, DBMS.PGSQL):
retVal = name.replace("\"", "")
if Backend.getIdentifiedDbms() in (DBMS.MSSQL, DBMS.SYBASE):
prefix = "%s." % DEFAULT_MSSQL_SCHEMA
diff --git a/lib/core/data.py b/lib/core/data.py
index 110b97f26..716948a23 100644
--- a/lib/core/data.py
+++ b/lib/core/data.py
@@ -19,7 +19,6 @@ from lib.core.settings import ACCESS_ALIASES
from lib.core.settings import FIREBIRD_ALIASES
from lib.core.settings import MAXDB_ALIASES
from lib.core.settings import SYBASE_ALIASES
-from lib.core.settings import DB2_ALIASES
# sqlmap paths
paths = advancedDict()
diff --git a/lib/core/dicts.py b/lib/core/dicts.py
index 838caa683..4582911f0 100644
--- a/lib/core/dicts.py
+++ b/lib/core/dicts.py
@@ -98,14 +98,3 @@ firebirdPrivs = {
"R": "REFERENCES",
"E": "EXECUTE"
}
-
-db2Privs = {
- 1:"CONTROLAUTH",
- 2:"ALTERAUTH",
- 3:"DELETEAUTH",
- 4:"INDEXAUTH",
- 5:"INSERTAUTH",
- 6:"REFAUTH",
- 7:"SELECTAUTH",
- 8:"UPDATEAUTH"
- }
diff --git a/lib/core/enums.py b/lib/core/enums.py
index 6cae3e396..f0366b5a4 100644
--- a/lib/core/enums.py
+++ b/lib/core/enums.py
@@ -34,7 +34,6 @@ class DBMS:
PGSQL = "PostgreSQL"
SQLITE = "SQLite"
SYBASE = "Sybase"
- DB2 = "IBM DB2"
class OS:
LINUX = "Linux"
diff --git a/lib/core/option.py b/lib/core/option.py
index 0dfba201f..7034fc671 100644
--- a/lib/core/option.py
+++ b/lib/core/option.py
@@ -89,7 +89,6 @@ from lib.core.settings import ACCESS_ALIASES
from lib.core.settings import FIREBIRD_ALIASES
from lib.core.settings import MAXDB_ALIASES
from lib.core.settings import SYBASE_ALIASES
-from lib.core.settings import DB2_ALIASES
from lib.core.settings import BURP_SPLITTER
from lib.core.settings import MAX_NUMBER_OF_THREADS
from lib.core.settings import TIME_DEFAULT_DELAY
@@ -683,7 +682,7 @@ def __setDBMS():
for aliases in (MSSQL_ALIASES, MYSQL_ALIASES, PGSQL_ALIASES, \
ORACLE_ALIASES, SQLITE_ALIASES, ACCESS_ALIASES, \
- FIREBIRD_ALIASES, MAXDB_ALIASES, SYBASE_ALIASES, DB2_ALIASES):
+ FIREBIRD_ALIASES, MAXDB_ALIASES, SYBASE_ALIASES):
if conf.dbms in aliases:
conf.dbms = aliases[0]
diff --git a/lib/core/settings.py b/lib/core/settings.py
index bb6a5c5e0..24eba1c2e 100644
--- a/lib/core/settings.py
+++ b/lib/core/settings.py
@@ -147,8 +147,6 @@ FIREBIRD_SYSTEM_DBS = ( "RDB$BACKUP_HISTORY", "RDB$CHARACTER_SETS", "RDB$CHECK_C
"RDB$TRIGGER_MESSAGES", "RDB$TYPES", "RDB$USER_PRIVILEGES", "RDB$VIEW_RELATIONS" )
MAXDB_SYSTEM_DBS = ( "SYSINFO", "DOMAIN" )
SYBASE_SYSTEM_DBS = ( "master", "model", "sybsystemdb", "sybsystemprocs" )
-DB2_SYSTEM_DBS = ( "NULLID", "SQLJ", "SYSCAT", "SYSFUN", "SYSIBM", "SYSIBMADM", "SYSIBMINTERNAL", "SYSIBMTS", "SYSPROC", "SYSPUBLIC",\
- "SYSSTAT", "SYSTOOLS" )
MSSQL_ALIASES = [ "microsoft sql server", "mssqlserver", "mssql", "ms" ]
MYSQL_ALIASES = [ "mysql", "my" ]
@@ -159,9 +157,8 @@ ACCESS_ALIASES = [ "access", "jet", "microsoft access", "msaccess" ]
FIREBIRD_ALIASES = [ "firebird", "mozilla firebird", "interbase", "ibase", "fb" ]
MAXDB_ALIASES = [ "maxdb", "sap maxdb", "sap db" ]
SYBASE_ALIASES = [ "sybase", "sybase sql server" ]
-DB2_ALIASES = [ "ibm db2", "db2" ]
-SUPPORTED_DBMS = MSSQL_ALIASES + MYSQL_ALIASES + PGSQL_ALIASES + ORACLE_ALIASES + SQLITE_ALIASES + ACCESS_ALIASES + FIREBIRD_ALIASES + MAXDB_ALIASES + SYBASE_ALIASES + DB2_ALIASES
+SUPPORTED_DBMS = MSSQL_ALIASES + MYSQL_ALIASES + PGSQL_ALIASES + ORACLE_ALIASES + SQLITE_ALIASES + ACCESS_ALIASES + FIREBIRD_ALIASES + MAXDB_ALIASES + SYBASE_ALIASES
SUPPORTED_OS = ( "linux", "windows" )
DBMS_DICT = { DBMS.MSSQL: [MSSQL_ALIASES, "python-pymssql", "http://pymssql.sourceforge.net/"],
@@ -172,8 +169,7 @@ DBMS_DICT = { DBMS.MSSQL: [MSSQL_ALIASES, "python-pymssql", "http://pymssql.sour
DBMS.ACCESS: [ACCESS_ALIASES, "python-pyodbc", "http://pyodbc.googlecode.com/"],
DBMS.FIREBIRD: [FIREBIRD_ALIASES, "python-kinterbasdb", "http://kinterbasdb.sourceforge.net/"],
DBMS.MAXDB: [MAXDB_ALIASES, None, None],
- DBMS.SYBASE: [SYBASE_ALIASES, "python-pymssql", "http://pymssql.sourceforge.net/"],
- DBMS.DB2: [DB2_ALIASES, None, None]
+ DBMS.SYBASE: [SYBASE_ALIASES, "python-pymssql", "http://pymssql.sourceforge.net/"]
}
REFERER_ALIASES = ( "ref", "referer", "referrer" )
diff --git a/plugins/dbms/db2/__init__.py b/plugins/dbms/db2/__init__.py
deleted file mode 100644
index 2dbbf0540..000000000
--- a/plugins/dbms/db2/__init__.py
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env python
-
-"""
-$Id: __init__.py 3678 2011-04-15 12:33:18Z stamparm $
-
-Copyright (c) 2006-2011 sqlmap developers (http://sqlmap.sourceforge.net/)
-See the file 'doc/COPYING' for copying permission
-"""
-
-from lib.core.enums import DBMS
-from lib.core.settings import DB2_SYSTEM_DBS
-from lib.core.unescaper import unescaper
-
-from plugins.dbms.db2.enumeration import Enumeration
-from plugins.dbms.db2.filesystem import Filesystem
-from plugins.dbms.db2.fingerprint import Fingerprint
-from plugins.dbms.db2.syntax import Syntax
-from plugins.dbms.db2.takeover import Takeover
-from plugins.generic.misc import Miscellaneous
-
-class DB2Map(Syntax, Fingerprint, Enumeration, Filesystem, Miscellaneous, Takeover):
- """
- This class defines DB2 methods
- """
-
- def __init__(self):
- self.excludeDbsList = DB2_SYSTEM_DBS
-
- Syntax.__init__(self)
- Fingerprint.__init__(self)
- Enumeration.__init__(self)
- Filesystem.__init__(self)
- Miscellaneous.__init__(self)
- Takeover.__init__(self)
-
- unescaper[DBMS.DB2] = Syntax.unescape
diff --git a/plugins/dbms/db2/connector.py b/plugins/dbms/db2/connector.py
deleted file mode 100644
index 8e51ce880..000000000
--- a/plugins/dbms/db2/connector.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env python
-
-"""
-$Id: connector.py 3678 2011-04-15 12:33:18Z stamparm $
-
-Copyright (c) 2006-2011 sqlmap developers (http://sqlmap.sourceforge.net/)
-See the file 'doc/COPYING' for copying permission
-"""
-
-try:
- import pyodbc
-except ImportError, _:
- pass
-
-from lib.core.data import logger
-from lib.core.exception import sqlmapConnectionException
-from lib.core.exception import sqlmapUnsupportedFeatureException
-
-from plugins.generic.connector import Connector as GenericConnector
-
-class Connector(GenericConnector):
- """
- Homepage: http://pyodbc.googlecode.com/
- User guide: http://code.google.com/p/pyodbc/wiki/GettingStarted
- API: http://code.google.com/p/pyodbc/w/list
- Debian package: python-pyodbc
- License: MIT
- """
-
- def __init__(self):
- GenericConnector.__init__(self)
\ No newline at end of file
diff --git a/plugins/dbms/db2/enumeration.py b/plugins/dbms/db2/enumeration.py
deleted file mode 100644
index 48a16293a..000000000
--- a/plugins/dbms/db2/enumeration.py
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env python
-
-"""
-$Id: enumeration.py 3678 2011-04-15 12:33:18Z stamparm $
-
-Copyright (c) 2006-2011 sqlmap developers (http://sqlmap.sourceforge.net/)
-See the file 'doc/COPYING' for copying permission
-"""
-
-
-from lib.core.data import logger
-from plugins.generic.enumeration import Enumeration as GenericEnumeration
-
-class Enumeration(GenericEnumeration):
- def __init__(self):
- GenericEnumeration.__init__(self)
-
- def getPasswordHashes(self):
- warnMsg = "on DB2 it is not possible to list password hashes"
- logger.warn(warnMsg)
-
- return {}
diff --git a/plugins/dbms/db2/filesystem.py b/plugins/dbms/db2/filesystem.py
deleted file mode 100644
index f140d0ab4..000000000
--- a/plugins/dbms/db2/filesystem.py
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env python
-
-"""
-$Id: filesystem.py 3678 2011-04-15 12:33:18Z stamparm $
-
-Copyright (c) 2006-2011 sqlmap developers (http://sqlmap.sourceforge.net/)
-See the file 'doc/COPYING' for copying permission
-"""
-
-from lib.core.common import randomStr
-from lib.core.data import conf
-from lib.core.data import kb
-from lib.core.data import logger
-from lib.core.enums import PLACE
-from lib.core.exception import sqlmapNoneDataException
-from lib.request import inject
-from lib.techniques.inband.union.use import unionUse
-
-from plugins.generic.filesystem import Filesystem as GenericFilesystem
-
-class Filesystem(GenericFilesystem):
- def __init__(self):
- GenericFilesystem.__init__(self)
diff --git a/plugins/dbms/db2/fingerprint.py b/plugins/dbms/db2/fingerprint.py
deleted file mode 100644
index f3cebbff0..000000000
--- a/plugins/dbms/db2/fingerprint.py
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/env python
-
-"""
-$Id: fingerprint.py 3678 2011-04-15 12:33:18Z stamparm $
-
-Copyright (c) 2006-2011 sqlmap developers (http://sqlmap.sourceforge.net/)
-See the file 'doc/COPYING' for copying permission
-"""
-
-
-from lib.core.common import Backend
-from lib.core.common import Format
-from lib.core.common import randomInt
-from lib.core.data import conf
-from lib.core.data import kb
-from lib.core.data import logger
-from lib.core.enums import DBMS
-from lib.core.session import setDbms
-from lib.core.settings import DB2_ALIASES
-from lib.request import inject
-
-from plugins.generic.fingerprint import Fingerprint as GenericFingerprint
-
-class Fingerprint(GenericFingerprint):
- def __init__(self):
- GenericFingerprint.__init__(self, DBMS.DB2)
-
- def versionCheck(self):
- minor, major = None, None
-
- for version in reversed(xrange(5, 15)):
- result = inject.checkBooleanExpression("(SELECT COUNT(*) FROM sysibm.sysversions WHERE versionnumber BETWEEN %d000000 AND %d999999)>0" % (version, version))
- if result:
- major = version
-
- for version in reversed(xrange(0, 20)):
- result = inject.checkBooleanExpression("(SELECT COUNT(*) FROM sysibm.sysversions WHERE versionnumber BETWEEN %d%02d0000 AND %d%02d9999)>0" % (major, version, major, version))
- if result:
- minor = version
- version = "%s.%s" % (major, minor)
- break
- break
-
- if major and minor:
- return "%s.%s" % (major, minor)
- else:
- return None
-
- def getFingerprint(self):
- value = ""
- wsOsFp = Format.getOs("web server", kb.headersFp)
-
- if wsOsFp:
- value += "%s\n" % wsOsFp
-
- if kb.data.banner:
- dbmsOsFp = Format.getOs("back-end DBMS", kb.bannerFp)
-
- if dbmsOsFp:
- value += "%s\n" % dbmsOsFp
-
- value += "back-end DBMS: "
-
- if not conf.extensiveFp:
- value += DBMS.DB2
- return value
-
- actVer = Format.getDbms()
- blank = " " * 15
- value += "active fingerprint: %s" % actVer
-
- if kb.bannerFp:
- banVer = kb.bannerFp["dbmsVersion"] if 'dbmsVersion' in kb.bannerFp else None
- banVer = Format.getDbms([banVer])
- value += "\n%sbanner parsing fingerprint: %s" % (blank, banVer)
-
- htmlErrorFp = Format.getErrorParsedDBMSes()
-
- if htmlErrorFp:
- value += "\n%shtml error message fingerprint: %s" % (blank, htmlErrorFp)
-
- return value
-
- def checkDbms(self):
- if not conf.extensiveFp and (Backend.isDbmsWithin(DB2_ALIASES) or conf.dbms in DB2_ALIASES):
- setDbms(DBMS.DB2)
-
- return True
-
- logMsg = "testing %s" % DBMS.DB2
- logger.info(logMsg)
-
- randInt = randomInt()
- result = inject.checkBooleanExpression("(SELECT %d FROM sysibm.sysdummy1) = %d" % (randInt, randInt))
-
- if result:
- logMsg = "confirming %s" % DBMS.DB2
- logger.info(logMsg)
-
- version = self.versionCheck()
-
- if version:
- Backend.setVersion(version)
- setDbms("%s %s" % (DBMS.DB2, Backend.getVersion()))
- else:
- setDbms(DBMS.DB2)
-
-
- return True
- else:
- warnMsg = "the back-end DBMS is not %s" % DBMS.DB2
- logger.warn(warnMsg)
-
- return False
diff --git a/plugins/dbms/db2/syntax.py b/plugins/dbms/db2/syntax.py
deleted file mode 100644
index 517347741..000000000
--- a/plugins/dbms/db2/syntax.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/env python
-
-"""
-$Id: syntax.py 3678 2011-04-15 12:33:18Z stamparm $
-
-Copyright (c) 2006-2011 sqlmap developers (http://sqlmap.sourceforge.net/)
-See the file 'doc/COPYING' for copying permission
-"""
-
-from lib.core.data import logger
-from lib.core.exception import sqlmapSyntaxException
-
-from plugins.generic.syntax import Syntax as GenericSyntax
-
-class Syntax(GenericSyntax):
- def __init__(self):
- GenericSyntax.__init__(self)
-
- @staticmethod
- def unescape(expression, quote=True):
- if quote:
- while True:
- index = expression.find("'")
- if index == -1:
- break
-
- firstIndex = index + 1
- index = expression[firstIndex:].find("'")
-
- if index == -1:
- raise sqlmapSyntaxException, "Unenclosed ' in '%s'" % expression
-
- lastIndex = firstIndex + index
- old = "'%s'" % expression[firstIndex:lastIndex]
- unescaped = ""
-
- for i in range(firstIndex, lastIndex):
- unescaped += "CHR(%d)" % (ord(expression[i]))
- if i < lastIndex - 1:
- unescaped += "||"
-
- expression = expression.replace(old, unescaped)
- else:
- expression = "||".join("CHR(%d)" % ord(c) for c in expression)
-
- return expression
-
- @staticmethod
- def escape(expression):
- logMsg = "escaping %s" % expression
- logger.info(logMsg)
- while True:
- index = expression.find("CHR(")
- if index == -1:
- break
-
- firstIndex = index
- index = expression[firstIndex:].find(")")
-
- if index == -1:
- raise sqlmapSyntaxException, "Unenclosed ) in '%s'" % expression
-
- lastIndex = firstIndex + index + 1
- old = expression[firstIndex:lastIndex]
- oldUpper = old.upper()
- oldUpper = oldUpper.lstrip("CHR(").rstrip(")")
- oldUpper = oldUpper.split("||")
-
- escaped = "'%s'" % "".join([chr(int(char)) for char in oldUpper])
- expression = expression.replace(old, escaped)
-
- return expression
diff --git a/plugins/dbms/db2/takeover.py b/plugins/dbms/db2/takeover.py
deleted file mode 100644
index 041b0ee40..000000000
--- a/plugins/dbms/db2/takeover.py
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env python
-
-"""
-$Id: takeover.py 3678 2011-04-15 12:33:18Z stamparm $
-
-Copyright (c) 2006-2011 sqlmap developers (http://sqlmap.sourceforge.net/)
-See the file 'doc/COPYING' for copying permission
-"""
-
-import re
-
-from lib.core.agent import agent
-from lib.core.common import isTechniqueAvailable
-from lib.core.common import normalizePath
-from lib.core.common import ntToPosixSlashes
-from lib.core.common import randomStr
-from lib.core.common import readInput
-from lib.core.data import kb
-from lib.core.data import logger
-from lib.core.data import paths
-from lib.core.enums import PAYLOAD
-from lib.request import inject
-from lib.request.connect import Connect as Request
-
-from plugins.generic.takeover import Takeover as GenericTakeover
-
-class Takeover(GenericTakeover):
- def __init__(self):
- self.__basedir = None
- self.__datadir = None
-
- GenericTakeover.__init__(self)
\ No newline at end of file
diff --git a/plugins/generic/enumeration.py b/plugins/generic/enumeration.py
index 9fa41dd6e..118ddff0e 100644
--- a/plugins/generic/enumeration.py
+++ b/plugins/generic/enumeration.py
@@ -43,7 +43,6 @@ from lib.core.dicts import firebirdTypes
from lib.core.dicts import mysqlPrivs
from lib.core.dicts import pgsqlPrivs
from lib.core.dicts import firebirdPrivs
-from lib.core.dicts import db2Privs
from lib.core.enums import DBMS
from lib.core.enums import EXPECTED
from lib.core.enums import PAYLOAD
@@ -99,14 +98,8 @@ class Enumeration:
infoMsg = "fetching banner"
logger.info(infoMsg)
- # Needed for DB2 versions < 9
- if Backend.isDbms(DBMS.DB2) and int(Backend.getVersion().split(".")[0]) < 9:
- query = queries[Backend.getIdentifiedDbms()].banner.query2
- kb.data.banner = unArrayizeValue(inject.getValue(query, safeCharEncode=False))
- else:
- query = queries[Backend.getIdentifiedDbms()].banner.query
- kb.data.banner = unArrayizeValue(inject.getValue(query, safeCharEncode=False))
-
+ query = queries[Backend.getIdentifiedDbms()].banner.query
+ kb.data.banner = unArrayizeValue(inject.getValue(query, safeCharEncode=False))
bannerParser(kb.data.banner)
if conf.os and conf.os == "windows":
@@ -198,7 +191,7 @@ class Enumeration:
errMsg = "unable to retrieve the number of database users"
raise sqlmapNoneDataException, errMsg
- if Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ if Backend.isDbms(DBMS.ORACLE):
plusOne = True
else:
plusOne = False
@@ -426,7 +419,7 @@ class Enumeration:
logger.info(infoMsg)
- if conf.user and Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ if conf.user and Backend.isDbms(DBMS.ORACLE):
conf.user = conf.user.upper()
if conf.user:
@@ -566,7 +559,7 @@ class Enumeration:
privileges = set()
- if Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ if Backend.isDbms(DBMS.ORACLE):
plusOne = True
else:
plusOne = False
@@ -624,25 +617,6 @@ class Enumeration:
elif Backend.isDbms(DBMS.FIREBIRD):
privileges.add(firebirdPrivs[privilege.strip()])
- # In DB2 we get Y or G if the privilege is
- # True, N otherwise
- elif Backend.isDbms(DBMS.DB2):
- privs = privilege.split(",")
- privilege = privs[0]
- privs = privs[1]
- privs = list(privs.strip())
- i = 1
-
- for priv in privs:
- if priv.upper() in ("Y", "G"):
- for position, db2Priv in db2Privs.items():
- if position == i:
- privilege += ", " + db2Priv
-
- i += 1
-
- privileges.add(privilege)
-
if self.__isAdminFromPrivileges(privileges):
areAdmins.add(user)
@@ -691,12 +665,6 @@ class Enumeration:
warnMsg += "names on other DBMSes"
logger.warn(warnMsg)
- if Backend.isDbms(DBMS.DB2):
- warnMsg = "schema names are going to be used on DB2 "
- warnMsg += "for enumeration as the counterpart to database "
- warnMsg += "names on other DBMSes"
- logger.warn(warnMsg)
-
infoMsg = "fetching database (schema) names"
else:
infoMsg = "fetching database names"
@@ -729,7 +697,7 @@ class Enumeration:
errMsg = "unable to retrieve the number of databases"
logger.error(errMsg)
else:
- if Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ if Backend.isDbms(DBMS.ORACLE):
plusOne = True
else:
plusOne = False
@@ -790,7 +758,7 @@ class Enumeration:
if conf.db == "CD":
conf.db = self.getCurrentDb()
- if conf.db and Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ if conf.db and Backend.isDbms(DBMS.ORACLE):
conf.db = conf.db.upper()
if conf.db:
@@ -902,7 +870,7 @@ class Enumeration:
tables = []
- if Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ if Backend.isDbms(DBMS.ORACLE):
plusOne = True
else:
plusOne = False
@@ -946,14 +914,10 @@ class Enumeration:
warnMsg += "table(s) columns"
logger.warn(warnMsg)
- # In DB2 we use the current user as default schema (db)
- if Backend.isDbms(DBMS.DB2):
- conf.db = self.getCurrentUser()
- else:
- conf.db = self.getCurrentDb()
+ conf.db = self.getCurrentDb()
elif conf.db is not None:
- if Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ if Backend.isDbms(DBMS.ORACLE):
conf.db = conf.db.upper()
if ',' in conf.db:
@@ -964,7 +928,7 @@ class Enumeration:
conf.db = safeSQLIdentificatorNaming(conf.db)
if conf.col:
- if Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ if Backend.isDbms(DBMS.ORACLE):
conf.col = conf.col.upper()
colList = conf.col.split(",")
@@ -975,7 +939,7 @@ class Enumeration:
colList[colList.index(col)] = safeSQLIdentificatorNaming(col)
if conf.tbl:
- if Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ if Backend.isDbms(DBMS.ORACLE):
conf.tbl = conf.tbl.upper()
tblList = conf.tbl.split(",")
@@ -1141,7 +1105,7 @@ class Enumeration:
query = rootQuery.blind.count % (unsafeSQLIdentificatorNaming(tbl), unsafeSQLIdentificatorNaming(conf.db))
query += condQuery
- elif Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ elif Backend.isDbms(DBMS.ORACLE):
query = rootQuery.blind.count % unsafeSQLIdentificatorNaming(tbl.upper())
query += condQuery
@@ -1180,7 +1144,7 @@ class Enumeration:
query = rootQuery.blind.query % (unsafeSQLIdentificatorNaming(tbl), unsafeSQLIdentificatorNaming(conf.db))
query += condQuery
field = None
- elif Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ elif Backend.isDbms(DBMS.ORACLE):
query = rootQuery.blind.query % unsafeSQLIdentificatorNaming(tbl.upper())
query += condQuery
field = None
@@ -1202,7 +1166,7 @@ class Enumeration:
if not onlyColNames:
if Backend.getIdentifiedDbms() in ( DBMS.MYSQL, DBMS.PGSQL ):
query = rootQuery.blind.query2 % (unsafeSQLIdentificatorNaming(tbl), column, unsafeSQLIdentificatorNaming(conf.db))
- elif Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ elif Backend.isDbms(DBMS.ORACLE):
query = rootQuery.blind.query2 % (unsafeSQLIdentificatorNaming(tbl.upper()), column)
elif Backend.isDbms(DBMS.MSSQL):
query = rootQuery.blind.query2 % (conf.db, conf.db, conf.db,
@@ -1302,11 +1266,7 @@ class Enumeration:
warnMsg += "number of entries for table '%s'" % conf.tbl
logger.warn(warnMsg)
- # In DB2 we use the current user as default schema (db)
- if Backend.isDbms(DBMS.DB2):
- conf.db = self.getCurrentUser()
- else:
- conf.db = self.getCurrentDb()
+ conf.db = self.getCurrentDb()
self.forceDbmsEnum()
@@ -1459,11 +1419,7 @@ class Enumeration:
warnMsg += "'%s' entries" % conf.tbl
logger.warn(warnMsg)
- # In DB2 we use the current user as default schema (db)
- if Backend.isDbms(DBMS.DB2):
- conf.db = self.getCurrentUser()
- else:
- conf.db = self.getCurrentDb()
+ conf.db = self.getCurrentDb()
rootQuery = queries[Backend.getIdentifiedDbms()].dump_table
@@ -1585,7 +1541,7 @@ class Enumeration:
infoMsg += "on database '%s'" % conf.db
logger.info(infoMsg)
- if Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ if Backend.isDbms(DBMS.ORACLE):
query = rootQuery.blind.count % (conf.tbl.upper() if not conf.db else ("%s.%s" % (conf.db.upper(), conf.tbl.upper())))
elif Backend.getIdentifiedDbms() in (DBMS.SQLITE, DBMS.ACCESS, DBMS.FIREBIRD):
query = rootQuery.blind.count % conf.tbl
@@ -1625,7 +1581,7 @@ class Enumeration:
entries, lengths = retVal
else:
- if Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ if Backend.isDbms(DBMS.ORACLE):
plusOne = True
else:
plusOne = False
@@ -1642,7 +1598,7 @@ class Enumeration:
if Backend.getIdentifiedDbms() in ( DBMS.MYSQL, DBMS.PGSQL ):
query = rootQuery.blind.query % (column, conf.db,
conf.tbl, index)
- elif Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ elif Backend.isDbms(DBMS.ORACLE):
query = rootQuery.blind.query % (column, column,
conf.tbl.upper() if not conf.db else ("%s.%s" % (conf.db.upper(), conf.tbl.upper())),
index)
@@ -1818,9 +1774,6 @@ class Enumeration:
for db in dbList:
db = safeSQLIdentificatorNaming(db)
- if Backend.isDbms(DBMS.DB2):
- db = db.upper()
-
infoMsg = "searching database"
if dbConsider == "1":
infoMsg += "s like"
@@ -1886,8 +1839,6 @@ class Enumeration:
query = rootQuery.blind.query
query += dbQuery
query += exclDbsQuery
- if Backend.isDbms(DBMS.DB2):
- query += ") AS foobar"
query = agent.limitQuery(index, query, dbCond)
value = inject.getValue(query, inband=False, error=False)
@@ -1933,7 +1884,7 @@ class Enumeration:
for tbl in tblList:
tbl = safeSQLIdentificatorNaming(tbl, True)
- if Backend.getIdentifiedDbms() in (DBMS.ORACLE, DBMS.DB2):
+ if Backend.isDbms(DBMS.ORACLE):
tbl = tbl.upper()
infoMsg = "searching table"
@@ -2000,8 +1951,6 @@ class Enumeration:
query = rootQuery.blind.query
query += tblQuery
query += exclDbsQuery
- if Backend.getIdentifiedDbms() == DBMS.DB2:
- query += ") AS foobar"
query = agent.limitQuery(index, query)
foundDb = inject.getValue(query, inband=False, error=False)
foundDb = safeSQLIdentificatorNaming(foundDb)
@@ -2099,9 +2048,6 @@ class Enumeration:
for column in colList:
column = safeSQLIdentificatorNaming(column)
- if Backend.isDbms(DBMS.DB2):
- column = column.upper()
-
infoMsg = "searching column"
if colConsider == "1":
infoMsg += "s like"
@@ -2186,8 +2132,6 @@ class Enumeration:
query = rootQuery.blind.query
query += colQuery
query += exclDbsQuery
- if Backend.isDbms(DBMS.DB2):
- query += ") AS foobar"
query = agent.limitQuery(index, query)
db = inject.getValue(query, inband=False, error=False)
db = safeSQLIdentificatorNaming(db)
diff --git a/xml/queries.xml b/xml/queries.xml
index 993585e4b..0ebb846ca 100644
--- a/xml/queries.xml
+++ b/xml/queries.xml
@@ -540,71 +540,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-