sqlmapproject/sqlmap · error · SqlmapDataException
can't use table existence check because of detected invalid…
Error message
can't use table existence check because of detected invalid results (most likely caused by inability of the used injection to distinguish erroneous results)
What it means
Sanity guard in tableExists: a control boolean-expression check returned truthy results that should be impossible, meaning the injection point cannot reliably distinguish erroneous from valid results (common with time-based injections under load), so existence brute force would be garbage.
Solutions
- Use a boolean/error-based injection point instead of time-based
- Increase --time-sec to make true/false discrimination reliable
- Skip brute-force enumeration on this injection
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at lib/utils/brute.py:82 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of sqlmapproject/sqlmap@0a35b20e39 (2026-08-26).
Data as JSON: /api/errors/b67e2081866c9ede.
Report an issue: GitHub.
Appendix: source
Thrown at lib/utils/brute.py:82
def tableExists(tableFile, regex=None):
if kb.choices.tableExists is None and not any(_ for _ in kb.injection.data if _ not in (PAYLOAD.TECHNIQUE.TIME, PAYLOAD.TECHNIQUE.STACKED)) and not conf.direct:
warnMsg = "it's not recommended to use '%s' and/or '%s' " % (PAYLOAD.SQLINJECTION[PAYLOAD.TECHNIQUE.TIME], PAYLOAD.SQLINJECTION[PAYLOAD.TECHNIQUE.STACKED])
warnMsg += "for common table existence check"
logger.warning(warnMsg)
message = "are you sure you want to continue? [y/N] "
kb.choices.tableExists = readInput(message, default='N', boolean=True)
if not kb.choices.tableExists:
return None
result = inject.checkBooleanExpression("%s" % safeStringFormat(BRUTE_TABLE_EXISTS_TEMPLATE, (randomInt(1), randomStr())))
if result:
errMsg = "can't use table existence check because of detected invalid results "
errMsg += "(most likely caused by inability of the used injection "
errMsg += "to distinguish erroneous results)"
raise SqlmapDataException(errMsg)
pushValue(conf.db)
if conf.db and Backend.getIdentifiedDbms() in UPPER_CASE_DBMSES:
conf.db = conf.db.upper()
message = "which common tables (wordlist) file do you want to use?\n"
message += "[1] default '%s' (press Enter)\n" % tableFile
message += "[2] custom"
choice = readInput(message, default='1')
if choice == '2':
message = "what's the custom common tables file location?\n"
tableFile = readInput(message) or tableFile
infoMsg = "performing table existence using items from '%s'" % tableFile
logger.info(infoMsg)
View on GitHub (pinned to 0a35b20e39)