diff --git a/lib/core/common.py b/lib/core/common.py index afb0af529..cb4016cd6 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -2427,6 +2427,18 @@ def unArrayizeValue(value): return value +def flattenValue(value): + """ + Returns an iterator representing flat representation of a given value + """ + + for i in iter(value): + if isinstance(i, (list, tuple)): + for j in flattenValue(i): + yield j + else: + yield i + def getSortedInjectionTests(): """ Returns prioritized test list by eventually detected DBMS from error diff --git a/lib/techniques/union/use.py b/lib/techniques/union/use.py index 5d919bd47..140cec65d 100644 --- a/lib/techniques/union/use.py +++ b/lib/techniques/union/use.py @@ -19,6 +19,7 @@ from lib.core.common import calculateDeltaSeconds from lib.core.common import clearConsoleLine from lib.core.common import dataToStdout from lib.core.common import extractRegexResult +from lib.core.common import flattenValue from lib.core.common import getConsoleWidth from lib.core.common import getUnicode from lib.core.common import hashDBRetrieve @@ -316,7 +317,7 @@ def unionUse(expression, unpack=True, dump=False): items = output.replace(kb.chars.start, "").replace(kb.chars.stop, "").split(kb.chars.delimiter) if conf.verbose == 1: - status = "[%s] [INFO] %s: %s" % (time.strftime("%X"), "resumed" if threadData.resumed else "retrieved", safecharencode(",".join("\"%s\"" % _ for _ in arrayizeValue(unArrayizeValue(items))))) + status = "[%s] [INFO] %s: %s" % (time.strftime("%X"), "resumed" if threadData.resumed else "retrieved", safecharencode(",".join("\"%s\"" % _ for _ in flattenValue(arrayizeValue(items))))) if len(status) > width: status = "%s..." % status[:width - 3]