From 04714374f92c270c74895a3cbaa0452db946c063 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Sat, 4 Dec 2010 10:05:18 +0000 Subject: [PATCH] now you can use kb.pageTemplate to set a page which will be used as a template in comparison process (at least in '-[RANDNUM] OR' cases we'll need to use different template(s)) --- lib/controller/checks.py | 12 ++++++------ lib/core/option.py | 1 + lib/request/comparison.py | 1 + 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/controller/checks.py b/lib/controller/checks.py index 3579344fc..e770b40c0 100644 --- a/lib/controller/checks.py +++ b/lib/controller/checks.py @@ -523,16 +523,16 @@ def checkDynamicContent(firstPage, secondPage): infoMsg = "dynamic content marked for removal (%d region%s)" % (len(kb.dynamicMarkings), 's' if len(kb.dynamicMarkings) > 1 else '') logger.info(infoMsg) - if conf.seqMatcher.a: + if kb.pageTemplate: for item in kb.dynamicMarkings: prefix, suffix = item if prefix is None: - conf.seqMatcher.a = re.sub('(?s)^.+%s' % suffix, suffix, conf.seqMatcher.a) + kb.pageTemplate = re.sub('(?s)^.+%s' % suffix, suffix, kb.pageTemplate) elif suffix is None: - conf.seqMatcher.a = re.sub('(?s)%s.+$' % prefix, prefix, conf.seqMatcher.a) + kb.pageTemplate = re.sub('(?s)%s.+$' % prefix, prefix, kb.pageTemplate) else: - conf.seqMatcher.a = re.sub('(?s)%s.+%s' % (prefix, suffix), '%s%s' % (prefix, suffix), conf.seqMatcher.a) + kb.pageTemplate = re.sub('(?s)%s.+%s' % (prefix, suffix), '%s%s' % (prefix, suffix), kb.pageTemplate) def checkStability(): """ @@ -548,7 +548,7 @@ def checkStability(): infoMsg = "testing if the url is stable, wait a few seconds" logger.info(infoMsg) - firstPage = conf.seqMatcher.a # set inside checkConnection() + firstPage = kb.pageTemplate # set inside checkConnection() time.sleep(1) secondPage, _ = Request.queryPage(content=True) @@ -741,7 +741,7 @@ def checkConnection(suppressOutput=False): start = time.time() page, _ = Request.queryPage(content=True) kb.responseTime = time.time() - start - conf.seqMatcher.set_seq1(page) + kb.pageTemplate = page except sqlmapConnectionException, errMsg: errMsg = getUnicode(errMsg) raise sqlmapConnectionException, errMsg diff --git a/lib/core/option.py b/lib/core/option.py index ec801df99..0389c9d03 100644 --- a/lib/core/option.py +++ b/lib/core/option.py @@ -1158,6 +1158,7 @@ def __setKnowledgeBaseAttributes(): kb.locks.seqLock = None kb.nullConnection = None + kb.pageTemplate = None # Back-end DBMS underlying operating system fingerprint via banner (-b) # parsing diff --git a/lib/request/comparison.py b/lib/request/comparison.py index e7116c546..4a9d2e872 100644 --- a/lib/request/comparison.py +++ b/lib/request/comparison.py @@ -23,6 +23,7 @@ def comparison(page, headers=None, getSeqMatcher=False, pageLength=None): return None regExpResults = None + conf.seqMatcher.set_seq1(kb.pageTemplate) if page: # String to be excluded before calculating page hash