diff --git a/lib/core/dump.py b/lib/core/dump.py index cf6141863..78654196d 100644 --- a/lib/core/dump.py +++ b/lib/core/dump.py @@ -28,6 +28,7 @@ from lib.core.data import logger from lib.core.enums import DBMS from lib.core.exception import sqlmapValueException from lib.core.replication import Replication +from lib.core.settings import BLANK from lib.core.settings import BUFFERED_LOG_SIZE from lib.core.settings import NULL from lib.core.settings import TRIM_STDOUT_DUMP_SIZE @@ -377,7 +378,7 @@ class Dump: for value in tableValues[column]['values']: try: - if not value or re.search("^[\ *]*$", value): #NULL + if not value or value == " ": # NULL continue int(value) @@ -390,7 +391,7 @@ class Dump: for value in tableValues[column]['values']: try: - if not value or re.search("^[\ *]*$", value): #NULL + if not value or value == " ": # NULL continue float(value) @@ -455,9 +456,7 @@ class Dump: value = u'' else: value = getUnicode(info["values"][i]) - - if re.search("^[\ *]*$", value): - value = NULL + value = {" ": NULL, "": BLANK}.get(value, value) values.append(value) maxlength = int(info["length"]) diff --git a/lib/core/settings.py b/lib/core/settings.py index 83346edff..f1ca4fa75 100644 --- a/lib/core/settings.py +++ b/lib/core/settings.py @@ -253,6 +253,9 @@ SQL_STATEMENTS = { # string representation for NULL value NULL = "NULL" +# string representation for blank ('') value +BLANK = "" + # string representation for current database CURRENT_DB = "CD" diff --git a/plugins/generic/enumeration.py b/plugins/generic/enumeration.py index 30d1e06e8..11bb5cbaf 100644 --- a/plugins/generic/enumeration.py +++ b/plugins/generic/enumeration.py @@ -55,10 +55,12 @@ from lib.core.exception import sqlmapNoneDataException from lib.core.exception import sqlmapUnsupportedFeatureException from lib.core.exception import sqlmapUserQuitException from lib.core.session import setOs +from lib.core.settings import BLANK from lib.core.settings import CONCAT_ROW_DELIMITER from lib.core.settings import CONCAT_VALUE_DELIMITER from lib.core.settings import CURRENT_DB from lib.core.settings import MAX_INT +from lib.core.settings import NULL from lib.core.settings import SQL_STATEMENTS from lib.core.shell import autoCompletion from lib.core.threads import getCurrentThreadData @@ -1635,7 +1637,7 @@ class Enumeration: else: colEntry = entry[index] if index < len(entry) else u'' - colEntryLen = len(getUnicode(colEntry)) + colEntryLen = len({" ": NULL, "": BLANK}.get(getUnicode(colEntry), getUnicode(colEntry))) maxLen = max(colLen, colEntryLen) if maxLen > kb.data.dumpedTable[column]["length"]: