From 2333903b684bdc8b118398e4a92bae81c9edc4f6 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Sun, 19 Nov 2017 02:16:52 +0100 Subject: [PATCH] Fixes #2785 --- lib/core/common.py | 9 ++++++--- lib/core/settings.py | 6 +++--- txt/checksum.md5 | 4 ++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/core/common.py b/lib/core/common.py index 2c0715f23..5cb8cb11a 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -105,7 +105,7 @@ from lib.core.settings import DEFAULT_GET_POST_DELIMITER from lib.core.settings import DEFAULT_MSSQL_SCHEMA from lib.core.settings import DEV_EMAIL_ADDRESS from lib.core.settings import DUMMY_USER_INJECTION -from lib.core.settings import DYNAMICITY_MARK_LENGTH +from lib.core.settings import DYNAMICITY_BOUNDARY_LENGTH from lib.core.settings import ERROR_PARSING_REGEXES from lib.core.settings import FILE_PATH_REGEXES from lib.core.settings import FORCE_COOKIE_EXPIRATION_TIME @@ -2795,7 +2795,7 @@ def findDynamicContent(firstPage, secondPage): for block in blocks[:]: (_, _, length) = block - if length <= DYNAMICITY_MARK_LENGTH: + if length <= 2 * DYNAMICITY_BOUNDARY_LENGTH: blocks.remove(block) # Making of dynamic markings based on prefix/suffix principle @@ -2814,6 +2814,9 @@ def findDynamicContent(firstPage, secondPage): continue if prefix and suffix: + prefix = prefix[-DYNAMICITY_BOUNDARY_LENGTH:] + suffix = suffix[:DYNAMICITY_BOUNDARY_LENGTH] + infix = max(re.search(r"(?s)%s(.+)%s" % (re.escape(prefix), re.escape(suffix)), _) for _ in (firstPage, secondPage)).group(1) if infix[0].isalnum(): @@ -2822,7 +2825,7 @@ def findDynamicContent(firstPage, secondPage): if infix[-1].isalnum(): suffix = trimAlphaNum(suffix) - kb.dynamicMarkings.append((prefix[-DYNAMICITY_MARK_LENGTH / 2:] if prefix else None, suffix[:DYNAMICITY_MARK_LENGTH / 2] if suffix else None)) + kb.dynamicMarkings.append((prefix if prefix else None, suffix if suffix else None)) if len(kb.dynamicMarkings) > 0: infoMsg = "dynamic content marked for removal (%d region%s)" % (len(kb.dynamicMarkings), 's' if len(kb.dynamicMarkings) > 1 else '') diff --git a/lib/core/settings.py b/lib/core/settings.py index 9ec9f5e4c..704dc0365 100644 --- a/lib/core/settings.py +++ b/lib/core/settings.py @@ -19,7 +19,7 @@ from lib.core.enums import DBMS_DIRECTORY_NAME from lib.core.enums import OS # sqlmap version (...) -VERSION = "1.1.11.22" +VERSION = "1.1.11.23" TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable" TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34} VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE) @@ -193,8 +193,8 @@ UNKNOWN_DBMS = "Unknown" # String used for representation of unknown DBMS version UNKNOWN_DBMS_VERSION = "Unknown" -# Dynamicity mark length used in dynamicity removal engine -DYNAMICITY_MARK_LENGTH = 32 +# Dynamicity boundary length used in dynamicity removal engine +DYNAMICITY_BOUNDARY_LENGTH = 20 # Dummy user prefix used in dictionary attack DUMMY_USER_PREFIX = "__dummy__" diff --git a/txt/checksum.md5 b/txt/checksum.md5 index 99735205f..d728fd9aa 100644 --- a/txt/checksum.md5 +++ b/txt/checksum.md5 @@ -27,7 +27,7 @@ d2cdb9e832e18a81e936ca3348144b16 lib/controller/handler.py 5fb9aaf874daa47ea2b672a22740e56b lib/controller/__init__.py fd69e56ce20a5a49ce10a7a745022378 lib/core/agent.py 8d9d771f7e67582c56a96a8d0ccbe4fc lib/core/bigarray.py -16b63aed575a43c1d406df30a9b22afe lib/core/common.py +ec43d0f5018a59faa6e4567581361d54 lib/core/common.py 54326d3a690f8b26fe5a5da1a589b369 lib/core/convert.py 90b1b08368ac8a859300e6fa6a8c796e lib/core/data.py 1c14bdbf47b8dba31f73da9ad731a54a lib/core/datatype.py @@ -46,7 +46,7 @@ e1c000db9be27f973569b1a430629037 lib/core/option.py 760d9df2a27ded29109b390ab202e72d lib/core/replication.py a2466b62e67f8b31736bac4dac590e51 lib/core/revision.py 02d4762140a72fd44668d3dab5eabda9 lib/core/session.py -5ca78784a48256f3b8a7bc98b9ec1978 lib/core/settings.py +71ad4ba8829df91c6250b0f70116c7cd lib/core/settings.py 35bffbad762eb9e03db9e93b1c991103 lib/core/shell.py a59ec28371ae067a6fdd8f810edbee3d lib/core/subprocessng.py d5a04d672a18f78deb2839c3745ff83c lib/core/target.py