diff --git a/lib/controller/checks.py b/lib/controller/checks.py index 2e0f702bb..8c4c8db4c 100644 --- a/lib/controller/checks.py +++ b/lib/controller/checks.py @@ -422,12 +422,11 @@ def checkSqlInjection(place, parameter, value): injection.data[stype].vector = vector injection.data[stype].comment = comment injection.data[stype].templatePayload = templatePayload + injection.data[stype].matchRatio = kb.matchRatio - injection.data[stype].conf = advancedDict() - injection.data[stype].conf.matchRatio = kb.matchRatio - injection.data[stype].conf.textOnly = conf.textOnly - injection.data[stype].conf.string = conf.string - injection.data[stype].conf.regexp = conf.regexp + injection.conf.textOnly = conf.textOnly + injection.conf.string = conf.string + injection.conf.regexp = conf.regexp if hasattr(test, "details"): for detailKey, detailValue in test.details.items(): diff --git a/lib/core/common.py b/lib/core/common.py index ef57b3b9c..5459a56f7 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -1943,19 +1943,20 @@ def initTechnique(technique=None): if data: kb.pageTemplate, kb.errorIsNone = getPageTemplate(data.templatePayload, kb.injection.place) + kb.matchRatio = data.matchRatio - kb.matchRatio = data.conf.matchRatio - if data.conf.textOnly: + # Restoring stored conf options + if kb.injection.conf.textOnly: conf.textOnly = True debugMsg = "restoring switch --text-only" logger.debug(debugMsg) - if data.conf.string: - conf.string = data.conf.string - debugMsg = "restoring option --string '%s'" % data.conf.string + if kb.injection.conf.string: + conf.string = kb.injection.conf.string + debugMsg = "restoring option --string '%s'" % conf.string logger.debug(debugMsg) - if data.conf.regexp: - conf.regexp = data.conf.regexp - debugMsg = "restoring option --regexp '%s'" % data.conf.regexp + if kb.injection.conf.regexp: + conf.regexp = kb.injection.conf.regexp + debugMsg = "restoring option --regexp '%s'" % conf.regexp logger.debug(debugMsg) else: warnMsg = "there is no injection data available for technique " @@ -2086,8 +2087,7 @@ def getComparePageRatio(firstPage, secondPage, filtered=False): """ if filtered: - firstPage = getFilteredPageContent(firstPage) - secondPage = getFilteredPageContent(secondPage) + (firstPage, secondPage) = map(getFilteredPageContent, (firstPage, secondPage)) conf.seqMatcher.set_seq1(firstPage) conf.seqMatcher.set_seq2(secondPage) diff --git a/lib/core/datatype.py b/lib/core/datatype.py index e35a0b771..4baa321ae 100644 --- a/lib/core/datatype.py +++ b/lib/core/datatype.py @@ -77,6 +77,10 @@ class injectionDict(advancedDict): # title, where, comment and reqPayload self.data = advancedDict() + # conf is a dict with stores current snapshot of important + # options used during detection + self.conf = advancedDict() + self.dbms = None self.dbms_version = None self.os = None