From 89f9e5b1e0e84166b0d9b6e5453b24dca1d5745d Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Sat, 5 Aug 2023 11:14:45 +0200 Subject: [PATCH] Fixes #5477 --- lib/controller/checks.py | 4 ++++ lib/core/datatype.py | 13 +++++++++++++ lib/core/settings.py | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/controller/checks.py b/lib/controller/checks.py index b0d5fd6b5..a58a51252 100644 --- a/lib/controller/checks.py +++ b/lib/controller/checks.py @@ -217,6 +217,7 @@ def checkSqlInjection(place, parameter, value): if _ > 1: __ = 2 * (_ - 1) + 1 if _ == lower else 2 * _ unionExtended = True + test.request._columns = test.request.columns test.request.columns = re.sub(r"\b%d\b" % _, str(__), test.request.columns) title = re.sub(r"\b%d\b" % _, str(__), title) test.title = re.sub(r"\b%d\b" % _, str(__), test.title) @@ -819,6 +820,9 @@ def checkSqlInjection(place, parameter, value): choice = readInput(msg, default=str(conf.verbose), checkBatch=False) conf.verbose = int(choice) setVerbosity() + if hasattr(test.request, "columns") and hasattr(test.request, "_columns"): + test.request.columns = test.request._columns + delattr(test.request, "_columns") tests.insert(0, test) elif choice == 'N': return None diff --git a/lib/core/datatype.py b/lib/core/datatype.py index eadcb9cf7..c044055e8 100644 --- a/lib/core/datatype.py +++ b/lib/core/datatype.py @@ -49,6 +49,19 @@ class AttribDict(dict): else: return None + def __delattr__(self, item): + """ + Deletes attributes + """ + + try: + return self.pop(item) + except KeyError: + if self.keycheck: + raise AttributeError("unable to access item '%s'" % item) + else: + return None + def __setattr__(self, item, value): """ Maps attributes to values diff --git a/lib/core/settings.py b/lib/core/settings.py index 06849e0e2..581697ede 100644 --- a/lib/core/settings.py +++ b/lib/core/settings.py @@ -20,7 +20,7 @@ from thirdparty import six from thirdparty.six import unichr as _unichr # sqlmap version (...) -VERSION = "1.7.8.1" +VERSION = "1.7.8.2" 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)