diff --git a/lib/core/common.py b/lib/core/common.py index d42b66bfb..b1daf73a9 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -1708,10 +1708,6 @@ def removeDynamicContent(page): def isDBMSVersionAtLeast(version): retVal = None - try: - version = float(version) - except ValueError, _: - raise sqlmapSyntaxException, "parameter version (%s) must be a floating point number" % version if kb.dbmsVersion and kb.dbmsVersion[0] != "Unknown" and kb.dbmsVersion[0] != None: value = kb.dbmsVersion[0].replace(" ", "") @@ -1724,9 +1720,8 @@ def isDBMSVersionAtLeast(version): value = float(value.replace("<=", "")) elif value.startswith(">"): value = float(value.replace("<", "")) - 0.01 - else: - value = float(value) - retVal = value >= version + + retVal = getUnicode(value) >= getUnicode(version) return retVal diff --git a/plugins/dbms/firebird/fingerprint.py b/plugins/dbms/firebird/fingerprint.py index 0dc8d18ca..667dc0d5f 100644 --- a/plugins/dbms/firebird/fingerprint.py +++ b/plugins/dbms/firebird/fingerprint.py @@ -144,3 +144,6 @@ class Fingerprint(GenericFingerprint): def forceDbmsEnum(self): conf.db = "%s%s" % (DBMS.FIREBIRD, METADB_SUFFIX) + + if conf.tbl: + conf.tbl = conf.tbl.upper() diff --git a/plugins/generic/enumeration.py b/plugins/generic/enumeration.py index a101be7f9..f2e200d02 100644 --- a/plugins/generic/enumeration.py +++ b/plugins/generic/enumeration.py @@ -915,7 +915,7 @@ class Enumeration: } rootQuery = queries[kb.dbms].columns - condition = rootQuery.blind.condition + condition = rootQuery.blind.condition if 'condition' in rootQuery.blind else None infoMsg = "fetching columns " @@ -1167,7 +1167,7 @@ class Enumeration: if kb.dbms == DBMS.ORACLE: query = rootQuery.blind.count % conf.tbl.upper() - elif kb.dbms in (DBMS.SQLITE, DBMS.ACCESS): + elif kb.dbms in (DBMS.SQLITE, DBMS.ACCESS, DBMS.FIREBIRD): query = rootQuery.blind.count % conf.tbl else: query = rootQuery.blind.count % (conf.db, conf.tbl) @@ -1216,6 +1216,9 @@ class Enumeration: elif kb.dbms == DBMS.SQLITE: query = rootQuery.blind.query % (column, conf.tbl, index) + elif kb.dbms == DBMS.FIREBIRD: + query = rootQuery.blind.query % (index, column, conf.tbl) + value = inject.getValue(query, inband=False) lengths[column] = max(lengths[column], len(value))