From 009f13742ebc1a6f4899d5dd3edab16ecf2702f2 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Wed, 27 Dec 2017 12:23:35 +0100 Subject: [PATCH] Dirty patch for safe-encoded unicode characters --- lib/core/settings.py | 2 +- lib/request/inject.py | 10 ++++++++++ txt/checksum.md5 | 4 ++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/core/settings.py b/lib/core/settings.py index a847e27a5..65a62caa3 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.12.28" +VERSION = "1.1.12.29" 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) diff --git a/lib/request/inject.py b/lib/request/inject.py index a9f50ad0a..47c438f87 100644 --- a/lib/request/inject.py +++ b/lib/request/inject.py @@ -46,6 +46,7 @@ from lib.core.settings import GET_VALUE_UPPERCASE_KEYWORDS from lib.core.settings import INFERENCE_MARKER from lib.core.settings import MAX_TECHNIQUES_PER_VALUE from lib.core.settings import SQL_SCALAR_REGEX +from lib.core.settings import UNICODE_ENCODING from lib.core.threads import getCurrentThreadData from lib.request.connect import Connect as Request from lib.request.direct import direct @@ -471,6 +472,15 @@ def getValue(expression, blind=True, union=True, error=True, time=True, fromUser warnMsg += "or switch '--hex'" if Backend.getIdentifiedDbms() not in (DBMS.ACCESS, DBMS.FIREBIRD) else "" singleTimeWarnMessage(warnMsg) + # Dirty patch (safe-encoded unicode characters) + if isinstance(value, unicode) and "\\x" in value: + try: + candidate = eval(repr(value).replace("\\\\x", "\\x").replace("u'", "'", 1)).decode(UNICODE_ENCODING) + if "\\x" not in candidate: + value = candidate + except: + pass + return extractExpectedValue(value, expected) def goStacked(expression, silent=False): diff --git a/txt/checksum.md5 b/txt/checksum.md5 index 75f807a73..9fb46bf7e 100644 --- a/txt/checksum.md5 +++ b/txt/checksum.md5 @@ -46,7 +46,7 @@ f872699e948d0692ce11b54781da814c lib/core/log.py 760d9df2a27ded29109b390ab202e72d lib/core/replication.py a2466b62e67f8b31736bac4dac590e51 lib/core/revision.py 02d4762140a72fd44668d3dab5eabda9 lib/core/session.py -3973af0d9064380cf28b0c09b0f9a4a2 lib/core/settings.py +686323f03ca4e5878cdb1ddfcad43f68 lib/core/settings.py 35bffbad762eb9e03db9e93b1c991103 lib/core/shell.py a59ec28371ae067a6fdd8f810edbee3d lib/core/subprocessng.py d93501771b41315f9fb949305b6ed257 lib/core/target.py @@ -73,7 +73,7 @@ ad6f76839408d827abfcdc57813f8518 lib/request/direct.py 4853bd0d523646315607a6a9a4c0b745 lib/request/dns.py effa0c3e4efceaf4932855e8e6677bf7 lib/request/httpshandler.py 5fb9aaf874daa47ea2b672a22740e56b lib/request/__init__.py -8c97ba431f9d3908054c3353702a5824 lib/request/inject.py +5709fef8b9d2d95585663cfab03cba8d lib/request/inject.py 3bd06a9aff869c7aa08609fe24c63827 lib/request/methodrequest.py 4357a294cd8aebedd00504a4ae8755c4 lib/request/pkihandler.py b3b351fb8d5e96f9243f7bfa3079d3c7 lib/request/rangehandler.py