introducing safe deprecation mechanism for HashDB versioning

This commit is contained in:
Miroslav Stampar 2012-03-12 22:55:57 +00:00
parent 48bcde478e
commit cda8815634
3 changed files with 21 additions and 23 deletions

View File

@ -89,6 +89,7 @@ from lib.core.settings import DESCRIPTION
from lib.core.settings import DUMMY_SQL_INJECTION_CHARS
from lib.core.settings import FORMATTER
from lib.core.settings import NULL
from lib.core.settings import HASHDB_MILESTONE_VALUE
from lib.core.settings import IS_WIN
from lib.core.settings import PLATFORM
from lib.core.settings import PYVERSION
@ -3187,7 +3188,7 @@ def hashDBWrite(key, value, serialize=False):
Helper function for writing session data to HashDB
"""
_ = "%s%s" % (conf.url or "%s%s" % (conf.hostname, conf.port), key)
_ = "%s%s%s" % (conf.url or "%s%s" % (conf.hostname, conf.port), key, HASHDB_MILESTONE_VALUE)
conf.hashDB.write(_, value, serialize)
def hashDBRetrieve(key, unserialize=False, checkConf=False):
@ -3195,7 +3196,7 @@ def hashDBRetrieve(key, unserialize=False, checkConf=False):
Helper function for restoring session data from HashDB
"""
_ = "%s%s" % (conf.url or "%s%s" % (conf.hostname, conf.port), key)
_ = "%s%s%s" % (conf.url or "%s%s" % (conf.hostname, conf.port), key, HASHDB_MILESTONE_VALUE)
return conf.hashDB.retrieve(_, unserialize) if kb.resumeValues and not (checkConf and any([conf.flushSession, conf.freshQueries])) else None
def resetCookieJar(cookieJar):

View File

@ -446,6 +446,9 @@ DEFAULT_COOKIE_DELIMITER = ';'
# Skip unforced HashDB flush requests below the threshold number of cached items
HASHDB_FLUSH_THRESHOLD = 32
# Unique milestone value used for forced deprecation of old HashDB values (e.g. because of changing of load/store mechanism)
HASHDB_MILESTONE_VALUE = "4SXDcCai5n" # r4853
# Warn user of possible delay due to large page dump in full UNION query injections
LARGE_OUTPUT_THRESHOLD = 1024**2

View File

@ -211,7 +211,6 @@ def __resumeHashDBValues():
Resume stored data values from HashDB
"""
try:
kb.absFilePaths = hashDBRetrieve(HASHDB_KEYS.KB_ABS_FILE_PATHS, True) or kb.absFilePaths
kb.chars = hashDBRetrieve(HASHDB_KEYS.KB_CHARS, True) or kb.chars
kb.dynamicMarkings = hashDBRetrieve(HASHDB_KEYS.KB_DYNAMIC_MARKINGS, True) or kb.dynamicMarkings
@ -231,11 +230,6 @@ def __resumeHashDBValues():
if injection not in kb.injections:
kb.injections.append(injection)
except binascii.Error:
errMsg = "revision r4833 invalidated all previous session data. "
errMsg += "You are advised either to temporary revert to the previous "
errMsg += "revision or (recommended) run with the switch '--flush-session'"
raise sqlmapGenericException, errMsg
def __setOutputResume():
"""