conf.md5hash thrown out

This commit is contained in:
Miroslav Stampar 2010-10-25 13:52:21 +00:00
parent 9a3879feba
commit 9c94a233a1
4 changed files with 9 additions and 17 deletions

View File

@ -22,7 +22,6 @@ from lib.core.common import randomStr
from lib.core.common import readInput from lib.core.common import readInput
from lib.core.common import showStaticWords from lib.core.common import showStaticWords
from lib.core.common import DynamicContentItem from lib.core.common import DynamicContentItem
from lib.core.convert import md5hash
from lib.core.convert import urlencode from lib.core.convert import urlencode
from lib.core.data import conf from lib.core.data import conf
from lib.core.data import kb from lib.core.data import kb
@ -202,11 +201,10 @@ def checkStability():
time.sleep(1) time.sleep(1)
secondPage, _ = Request.queryPage(content=True) secondPage, _ = Request.queryPage(content=True)
condition = (firstPage == secondPage) kb.pageStable = (firstPage == secondPage)
if condition: if kb.pageStable:
if firstPage: if firstPage:
conf.md5hash = md5hash(firstPage)
logMsg = "url is stable" logMsg = "url is stable"
logger.info(logMsg) logger.info(logMsg)
else: else:
@ -216,7 +214,7 @@ def checkStability():
errMsg += "using higher verbosity levels" errMsg += "using higher verbosity levels"
raise sqlmapNoneDataException, errMsg raise sqlmapNoneDataException, errMsg
elif not condition: else:
warnMsg = "url is not stable, sqlmap will base the page " warnMsg = "url is not stable, sqlmap will base the page "
warnMsg += "comparison on a sequence matcher. If no dynamic nor " warnMsg += "comparison on a sequence matcher. If no dynamic nor "
warnMsg += "injectable parameters are detected, or in case of " warnMsg += "injectable parameters are detected, or in case of "
@ -253,7 +251,7 @@ def checkStability():
else: else:
checkDynamicContent(firstPage, secondPage) checkDynamicContent(firstPage, secondPage)
return condition return kb.pageStable
def checkString(): def checkString():
if not conf.string: if not conf.string:

View File

@ -1014,7 +1014,6 @@ def __setConfAttributes():
conf.loggedToOut = None conf.loggedToOut = None
conf.logic = "AND" conf.logic = "AND"
conf.matchRatio = None conf.matchRatio = None
conf.md5hash = None
conf.multipleTargets = False conf.multipleTargets = False
conf.outputPath = None conf.outputPath = None
conf.paramDict = {} conf.paramDict = {}
@ -1083,6 +1082,7 @@ def __setKnowledgeBaseAttributes():
kb.osVersion = None kb.osVersion = None
kb.osSP = None kb.osSP = None
kb.pageStable = None
kb.parenthesis = None kb.parenthesis = None
kb.partRun = None kb.partRun = None
kb.proxyAuthHeader = None kb.proxyAuthHeader = None

View File

@ -298,6 +298,7 @@ def initTargetEnv():
kb.injPlace = None kb.injPlace = None
kb.injType = None kb.injType = None
kb.nullConnection = None kb.nullConnection = None
kb.pageStable = None
kb.parenthesis = None kb.parenthesis = None
kb.proxyAuthHeader = None kb.proxyAuthHeader = None
kb.stackedTest = None kb.stackedTest = None

View File

@ -77,11 +77,11 @@ def comparison(page, headers=None, getSeqMatcher=False, pageLength=None):
if conf.thold: if conf.thold:
conf.matchRatio = conf.thold conf.matchRatio = conf.thold
elif conf.md5hash is not None and ratio > 0.6 and ratio < 1: elif kb.pageStable and ratio > 0.6 and ratio < 1:
logger.debug("setting match ratio to %.3f" % ratio) logger.debug("setting match ratio to %.3f" % ratio)
conf.matchRatio = ratio conf.matchRatio = ratio
elif conf.md5hash is None or ( conf.md5hash is not None and ratio < 0.6 ): elif not kb.pageStable or ( kb.pageStable and ratio < 0.6 ):
logger.debug("setting match ratio to default value 0.900") logger.debug("setting match ratio to default value 0.900")
conf.matchRatio = 0.900 conf.matchRatio = 0.900
@ -93,13 +93,6 @@ def comparison(page, headers=None, getSeqMatcher=False, pageLength=None):
if getSeqMatcher: if getSeqMatcher:
return ratio return ratio
# If the url is stable it returns True if the page has the same MD5
# hash of the original one
# NOTE: old implementation, it did not handle automatically the fact
# that the url could be not stable (due to VIEWSTATE, counter, etc.)
#elif conf.md5hash is not None:
# return conf.md5hash == md5hash(page)
# In case of an DBMS error page return False # In case of an DBMS error page return False
elif conf.errorComparison and kb.lastErrorPage and kb.lastErrorPage[0]==kb.lastRequestUID: elif conf.errorComparison and kb.lastErrorPage and kb.lastErrorPage[0]==kb.lastRequestUID:
return False return False