Adding Esperanto DBMS agnostic engine

This commit is contained in:
Miroslav Štampar 2026-07-16 18:13:32 +02:00
parent c496cf99e6
commit 57f8485279
20 changed files with 4318 additions and 9 deletions

View file

@ -77,7 +77,7 @@ def action():
kb.tamperFunctions = (kb.tamperFunctions or []) + [function]
logger.info("using tamper scripts 'blindbinary' and 'infoschema2innodb' so data retrieval and table enumeration can pass the WAF/IPS")
if not Backend.getDbms() or not conf.dbmsHandler:
if (not Backend.getDbms() and not conf.esperanto) or not conf.dbmsHandler:
htmlParsed = Format.getErrorParsedDBMSes()
errMsg = "sqlmap was not able to fingerprint the "

View file

@ -10,6 +10,7 @@ from lib.core.common import getSafeExString
from lib.core.common import singleTimeWarnMessage
from lib.core.data import conf
from lib.core.data import kb
from lib.core.data import logger
from lib.core.dicts import DBMS_DICT
from lib.core.enums import DBMS
from lib.core.dicts import DBWIRE_MODULES
@ -86,6 +87,15 @@ def setHandler():
management system.
"""
if conf.esperanto:
# force the DBMS-agnostic engine: skip per-DBMS fingerprinting entirely and
# let the boolean-oracle 'esperanto' handler drive enumeration.
from extra.esperanto import buildHandler
conf.dbmsHandler = buildHandler()
conf.dbmsHandler._dbms = "Esperanto"
logger.info("using the DBMS-agnostic 'Esperanto' engine (fingerprinting skipped)")
return
items = [
(DBMS.MYSQL, MYSQL_ALIASES, MySQLMap, "plugins.dbms.mysql.connector"),
(DBMS.ORACLE, ORACLE_ALIASES, OracleMap, "plugins.dbms.oracle.connector"),