diff --git a/lib/techniques/brute/use.py b/lib/techniques/brute/use.py index 5f6d40c03..4bf9392c8 100644 --- a/lib/techniques/brute/use.py +++ b/lib/techniques/brute/use.py @@ -35,7 +35,9 @@ def tableExists(tableFile): length = len(tables) for table in tables: - query = agent.prefixQuery("%s" % safeStringFormat("AND EXISTS(SELECT %d FROM %s)", (randomInt(1), table if not conf.db else "%s.%s" % (conf.db, table)))) + if conf.db and '(*)' not in conf.db: + table = "%s.%s" % (conf.db, table) + query = agent.prefixQuery("%s" % safeStringFormat("AND EXISTS(SELECT %d FROM %s)", (randomInt(1), table))) query = agent.postfixQuery(query) result = Request.queryPage(agent.payload(newValue=query)) @@ -71,7 +73,11 @@ def columnExists(columnFile): raise sqlmapMissingMandatoryOptionException, errMsg columns = getFileItems(columnFile) - table = conf.tbl if not conf.db else ("%s.%s" % (conf.db, conf.tbl)) + if conf.db and '(*)' not in conf.db: + table = "%s.%s" % (conf.db, conf.tbl) + else: + table = conf.tbl + retVal = [] infoMsg = "checking column existence using items from '%s'" % columnFile logger.info(infoMsg) diff --git a/plugins/dbms/access/fingerprint.py b/plugins/dbms/access/fingerprint.py index 76e686a9e..5aa2738af 100644 --- a/plugins/dbms/access/fingerprint.py +++ b/plugins/dbms/access/fingerprint.py @@ -191,4 +191,4 @@ class Fingerprint(GenericFingerprint): return False def forceDbmsEnum(self): - conf.db = "Access" + conf.db = "Access (*)" diff --git a/plugins/dbms/firebird/fingerprint.py b/plugins/dbms/firebird/fingerprint.py index 139f2b73c..41026d474 100644 --- a/plugins/dbms/firebird/fingerprint.py +++ b/plugins/dbms/firebird/fingerprint.py @@ -149,4 +149,4 @@ class Fingerprint(GenericFingerprint): return False def forceDbmsEnum(self): - conf.db = "Firebird" + conf.db = "Firebird (*)" diff --git a/plugins/dbms/maxdb/fingerprint.py b/plugins/dbms/maxdb/fingerprint.py index 44968d492..db2fcd327 100644 --- a/plugins/dbms/maxdb/fingerprint.py +++ b/plugins/dbms/maxdb/fingerprint.py @@ -151,4 +151,4 @@ class Fingerprint(GenericFingerprint): return False def forceDbmsEnum(self): - conf.db = "SAP MaxDB" + conf.db = "SAP MaxDB (*)" diff --git a/plugins/dbms/sqlite/fingerprint.py b/plugins/dbms/sqlite/fingerprint.py index ec3890f12..eeac695db 100644 --- a/plugins/dbms/sqlite/fingerprint.py +++ b/plugins/dbms/sqlite/fingerprint.py @@ -114,4 +114,4 @@ class Fingerprint(GenericFingerprint): return False def forceDbmsEnum(self): - conf.db = "SQLite" + conf.db = "SQLite (*)" diff --git a/plugins/generic/enumeration.py b/plugins/generic/enumeration.py index 9bd587a7c..af4b17245 100644 --- a/plugins/generic/enumeration.py +++ b/plugins/generic/enumeration.py @@ -1155,7 +1155,7 @@ class Enumeration: if kb.dbms == DBMS.ORACLE: query = rootQuery.blind.count % conf.tbl.upper() - elif kb.dbms == DBMS.SQLITE: + elif kb.dbms in (DBMS.SQLITE, DBMS.ACCESS): query = rootQuery.blind.count % conf.tbl else: query = rootQuery.blind.count % (conf.db, conf.tbl) diff --git a/xml/queries.xml b/xml/queries.xml index 20bd4944c..6197f50c9 100644 --- a/xml/queries.xml +++ b/xml/queries.xml @@ -364,6 +364,10 @@ + + + +