Path: blob/master/plugins/dbms/frontbase/fingerprint.py
2992 views
#!/usr/bin/env python12"""3Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)4See the file 'LICENSE' for copying permission5"""67from lib.core.common import Backend8from lib.core.common import Format9from lib.core.data import conf10from lib.core.data import kb11from lib.core.data import logger12from lib.core.enums import DBMS13from lib.core.session import setDbms14from lib.core.settings import FRONTBASE_ALIASES15from lib.request import inject16from plugins.generic.fingerprint import Fingerprint as GenericFingerprint1718class Fingerprint(GenericFingerprint):19def __init__(self):20GenericFingerprint.__init__(self, DBMS.FRONTBASE)2122def getFingerprint(self):23value = ""24wsOsFp = Format.getOs("web server", kb.headersFp)2526if wsOsFp:27value += "%s\n" % wsOsFp2829if kb.data.banner:30dbmsOsFp = Format.getOs("back-end DBMS", kb.bannerFp)3132if dbmsOsFp:33value += "%s\n" % dbmsOsFp3435value += "back-end DBMS: "3637if not conf.extensiveFp:38value += DBMS.FRONTBASE39return value4041actVer = Format.getDbms()42blank = " " * 1543value += "active fingerprint: %s" % actVer4445if kb.bannerFp:46banVer = kb.bannerFp.get("dbmsVersion")4748if banVer:49banVer = Format.getDbms([banVer])50value += "\n%sbanner parsing fingerprint: %s" % (blank, banVer)5152htmlErrorFp = Format.getErrorParsedDBMSes()5354if htmlErrorFp:55value += "\n%shtml error message fingerprint: %s" % (blank, htmlErrorFp)5657return value5859def checkDbms(self):60if not conf.extensiveFp and Backend.isDbmsWithin(FRONTBASE_ALIASES):61setDbms(DBMS.FRONTBASE)62return True6364infoMsg = "testing %s" % DBMS.FRONTBASE65logger.info(infoMsg)6667result = inject.checkBooleanExpression("(SELECT degradedTransactions FROM INFORMATION_SCHEMA.IO_STATISTICS)>=0")6869if result:70infoMsg = "confirming %s" % DBMS.FRONTBASE71logger.info(infoMsg)7273result = inject.checkBooleanExpression("(SELECT TOP (0,1) file_version FROM INFORMATION_SCHEMA.FRAGMENTATION)>=0")7475if not result:76warnMsg = "the back-end DBMS is not %s" % DBMS.FRONTBASE77logger.warning(warnMsg)7879return False8081setDbms(DBMS.FRONTBASE)8283return True84else:85warnMsg = "the back-end DBMS is not %s" % DBMS.FRONTBASE86logger.warning(warnMsg)8788return False899091