#!/usr/bin/env python"""Copyright (c) 2006-2023 sqlmap developers (https://sqlmap.org/)See the file 'LICENSE' for copying permission"""from lib.core.common import Backendfrom lib.core.data import conffrom lib.core.data import kbfrom lib.core.dicts import DBMS_DICTfrom lib.core.enums import DBMSfrom lib.core.exception import SqlmapConnectionExceptionfrom lib.core.settings import ACCESS_ALIASESfrom lib.core.settings import ALTIBASE_ALIASESfrom lib.core.settings import CACHE_ALIASESfrom lib.core.settings import CLICKHOUSE_ALIASESfrom lib.core.settings import CRATEDB_ALIASESfrom lib.core.settings import CUBRID_ALIASESfrom lib.core.settings import DB2_ALIASESfrom lib.core.settings import DERBY_ALIASESfrom lib.core.settings import EXTREMEDB_ALIASESfrom lib.core.settings import FIREBIRD_ALIASESfrom lib.core.settings import FRONTBASE_ALIASESfrom lib.core.settings import H2_ALIASESfrom lib.core.settings import HSQLDB_ALIASESfrom lib.core.settings import INFORMIX_ALIASESfrom lib.core.settings import MAXDB_ALIASESfrom lib.core.settings import MCKOI_ALIASESfrom lib.core.settings import MIMERSQL_ALIASESfrom lib.core.settings import MONETDB_ALIASESfrom lib.core.settings import MSSQL_ALIASESfrom lib.core.settings import MYSQL_ALIASESfrom lib.core.settings import ORACLE_ALIASESfrom lib.core.settings import PGSQL_ALIASESfrom lib.core.settings import PRESTO_ALIASESfrom lib.core.settings import RAIMA_ALIASESfrom lib.core.settings import SQLITE_ALIASESfrom lib.core.settings import SYBASE_ALIASESfrom lib.core.settings import VERTICA_ALIASESfrom lib.core.settings import VIRTUOSO_ALIASESfrom lib.utils.sqlalchemy import SQLAlchemyfrom plugins.dbms.access.connector import Connector as AccessConnfrom plugins.dbms.access import AccessMapfrom plugins.dbms.altibase.connector import Connector as AltibaseConnfrom plugins.dbms.altibase import AltibaseMapfrom plugins.dbms.cache.connector import Connector as CacheConnfrom plugins.dbms.cache import CacheMapfrom plugins.dbms.clickhouse.connector import Connector as ClickHouseConnfrom plugins.dbms.clickhouse import ClickHouseMapfrom plugins.dbms.cratedb.connector import Connector as CrateDBConnfrom plugins.dbms.cratedb import CrateDBMapfrom plugins.dbms.cubrid.connector import Connector as CubridConnfrom plugins.dbms.cubrid import CubridMapfrom plugins.dbms.db2.connector import Connector as DB2Connfrom plugins.dbms.db2 import DB2Mapfrom plugins.dbms.derby.connector import Connector as DerbyConnfrom plugins.dbms.derby import DerbyMapfrom plugins.dbms.extremedb.connector import Connector as ExtremeDBConnfrom plugins.dbms.extremedb import ExtremeDBMapfrom plugins.dbms.firebird.connector import Connector as FirebirdConnfrom plugins.dbms.firebird import FirebirdMapfrom plugins.dbms.frontbase.connector import Connector as FrontBaseConnfrom plugins.dbms.frontbase import FrontBaseMapfrom plugins.dbms.h2.connector import Connector as H2Connfrom plugins.dbms.h2 import H2Mapfrom plugins.dbms.hsqldb.connector import Connector as HSQLDBConnfrom plugins.dbms.hsqldb import HSQLDBMapfrom plugins.dbms.informix.connector import Connector as InformixConnfrom plugins.dbms.informix import InformixMapfrom plugins.dbms.maxdb.connector import Connector as MaxDBConnfrom plugins.dbms.maxdb import MaxDBMapfrom plugins.dbms.mckoi.connector import Connector as MckoiConnfrom plugins.dbms.mckoi import MckoiMapfrom plugins.dbms.mimersql.connector import Connector as MimerSQLConnfrom plugins.dbms.mimersql import MimerSQLMapfrom plugins.dbms.monetdb.connector import Connector as MonetDBConnfrom plugins.dbms.monetdb import MonetDBMapfrom plugins.dbms.mssqlserver.connector import Connector as MSSQLServerConnfrom plugins.dbms.mssqlserver import MSSQLServerMapfrom plugins.dbms.mysql.connector import Connector as MySQLConnfrom plugins.dbms.mysql import MySQLMapfrom plugins.dbms.oracle.connector import Connector as OracleConnfrom plugins.dbms.oracle import OracleMapfrom plugins.dbms.postgresql.connector import Connector as PostgreSQLConnfrom plugins.dbms.postgresql import PostgreSQLMapfrom plugins.dbms.presto.connector import Connector as PrestoConnfrom plugins.dbms.presto import PrestoMapfrom plugins.dbms.raima.connector import Connector as RaimaConnfrom plugins.dbms.raima import RaimaMapfrom plugins.dbms.sqlite.connector import Connector as SQLiteConnfrom plugins.dbms.sqlite import SQLiteMapfrom plugins.dbms.sybase.connector import Connector as SybaseConnfrom plugins.dbms.sybase import SybaseMapfrom plugins.dbms.vertica.connector import Connector as VerticaConnfrom plugins.dbms.vertica import VerticaMapfrom plugins.dbms.virtuoso.connector import Connector as VirtuosoConnfrom plugins.dbms.virtuoso import VirtuosoMapdef setHandler():"""Detect which is the target web application back-end databasemanagement system."""items = [(DBMS.MYSQL, MYSQL_ALIASES, MySQLMap, MySQLConn),(DBMS.ORACLE, ORACLE_ALIASES, OracleMap, OracleConn),(DBMS.PGSQL, PGSQL_ALIASES, PostgreSQLMap, PostgreSQLConn),(DBMS.MSSQL, MSSQL_ALIASES, MSSQLServerMap, MSSQLServerConn),(DBMS.SQLITE, SQLITE_ALIASES, SQLiteMap, SQLiteConn),(DBMS.ACCESS, ACCESS_ALIASES, AccessMap, AccessConn),(DBMS.FIREBIRD, FIREBIRD_ALIASES, FirebirdMap, FirebirdConn),(DBMS.MAXDB, MAXDB_ALIASES, MaxDBMap, MaxDBConn),(DBMS.SYBASE, SYBASE_ALIASES, SybaseMap, SybaseConn),(DBMS.DB2, DB2_ALIASES, DB2Map, DB2Conn),(DBMS.HSQLDB, HSQLDB_ALIASES, HSQLDBMap, HSQLDBConn),(DBMS.H2, H2_ALIASES, H2Map, H2Conn),(DBMS.INFORMIX, INFORMIX_ALIASES, InformixMap, InformixConn),(DBMS.MONETDB, MONETDB_ALIASES, MonetDBMap, MonetDBConn),(DBMS.DERBY, DERBY_ALIASES, DerbyMap, DerbyConn),(DBMS.VERTICA, VERTICA_ALIASES, VerticaMap, VerticaConn),(DBMS.MCKOI, MCKOI_ALIASES, MckoiMap, MckoiConn),(DBMS.PRESTO, PRESTO_ALIASES, PrestoMap, PrestoConn),(DBMS.ALTIBASE, ALTIBASE_ALIASES, AltibaseMap, AltibaseConn),(DBMS.MIMERSQL, MIMERSQL_ALIASES, MimerSQLMap, MimerSQLConn),(DBMS.CLICKHOUSE, CLICKHOUSE_ALIASES, ClickHouseMap, ClickHouseConn),(DBMS.CRATEDB, CRATEDB_ALIASES, CrateDBMap, CrateDBConn),(DBMS.CUBRID, CUBRID_ALIASES, CubridMap, CubridConn),(DBMS.CACHE, CACHE_ALIASES, CacheMap, CacheConn),(DBMS.EXTREMEDB, EXTREMEDB_ALIASES, ExtremeDBMap, ExtremeDBConn),(DBMS.FRONTBASE, FRONTBASE_ALIASES, FrontBaseMap, FrontBaseConn),(DBMS.RAIMA, RAIMA_ALIASES, RaimaMap, RaimaConn),(DBMS.VIRTUOSO, VIRTUOSO_ALIASES, VirtuosoMap, VirtuosoConn),]_ = max(_ if (conf.get("dbms") or Backend.getIdentifiedDbms() or kb.heuristicExtendedDbms or "").lower() in _[1] else () for _ in items)if _:items.remove(_)items.insert(0, _)for dbms, aliases, Handler, Connector in items:if conf.forceDbms:if conf.forceDbms.lower() not in aliases:continueelse:kb.dbms = conf.dbms = conf.forceDbms = dbmsif kb.dbmsFilter:if dbms not in kb.dbmsFilter:continuehandler = Handler()conf.dbmsConnector = Connector()if conf.direct:exception = Nonedialect = DBMS_DICT[dbms][3]if dialect:try:sqlalchemy = SQLAlchemy(dialect=dialect)sqlalchemy.connect()if sqlalchemy.connector:conf.dbmsConnector = sqlalchemyexcept Exception as ex:exception = exif not dialect or exception:try:conf.dbmsConnector.connect()except Exception as ex:if exception:raise exceptionelse:if not isinstance(ex, NameError):raiseelse:msg = "support for direct connection to '%s' is not available. " % dbmsmsg += "Please rerun with '--dependencies'"raise SqlmapConnectionException(msg)if conf.forceDbms == dbms or handler.checkDbms():if kb.resolutionDbms:conf.dbmsHandler = max(_ for _ in items if _[0] == kb.resolutionDbms)[2]()conf.dbmsHandler._dbms = kb.resolutionDbmselse:conf.dbmsHandler = handlerconf.dbmsHandler._dbms = dbmsbreakelse:conf.dbmsConnector = None# At this point back-end DBMS is correctly fingerprinted, no need# to enforce it anymoreBackend.flushForcedDbms()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。