From 1646a072dfe5fa82525aa0f5bff238703b6444f0 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Sat, 29 Mar 2025 08:04:00 +0100 Subject: [PATCH] This PR adds SORTABLE_HTML to dump options for adding sort links to the tables in HTML dumps. --- lib/core/dump.py | 5 ++ lib/core/enums.py | 1 + lib/core/settings.py | 162 +++++++++++++++++++++++++++++++++++++++---- sqlmap.conf | 3 +- sqlmap.py | 6 ++ 5 files changed, 162 insertions(+), 15 deletions(-) diff --git a/lib/core/dump.py b/lib/core/dump.py index 3c65bf2d2..3ccb61025 100644 --- a/lib/core/dump.py +++ b/lib/core/dump.py @@ -47,6 +47,8 @@ from lib.core.exception import SqlmapValueException from lib.core.replication import Replication from lib.core.settings import DUMP_FILE_BUFFER_SIZE from lib.core.settings import HTML_DUMP_CSS_STYLE +from lib.core.settings import HTML_DUMP_CSS_SORTABLE_STYLE +from lib.core.settings import HTML_DUMP_SORTABLE_JAVASCRIPT from lib.core.settings import IS_WIN from lib.core.settings import METADB_SUFFIX from lib.core.settings import MIN_BINARY_DISK_DUMP_SIZE @@ -541,6 +543,9 @@ class Dump(object): dataToDumpFile(dumpFP, "\n" % VERSION_STRING) dataToDumpFile(dumpFP, "%s\n" % ("%s%s" % ("%s." % db if METADB_SUFFIX not in db else "", table))) dataToDumpFile(dumpFP, HTML_DUMP_CSS_STYLE) + if conf.dumpSortable: + dataToDumpFile(dumpFP, HTML_DUMP_CSS_SORTABLE_STYLE) + dataToDumpFile(dumpFP, HTML_DUMP_SORTABLE_JAVASCRIPT) dataToDumpFile(dumpFP, "\n\n\n\n\n\n") if count == 1: diff --git a/lib/core/enums.py b/lib/core/enums.py index 16a32d044..14402bcd9 100644 --- a/lib/core/enums.py +++ b/lib/core/enums.py @@ -229,6 +229,7 @@ class REGISTRY_OPERATION(object): class DUMP_FORMAT(object): CSV = "CSV" HTML = "HTML" + SORTABLE_HTML = "SORTABLE_HTML" SQLITE = "SQLITE" class HTTP_HEADER(object): diff --git a/lib/core/settings.py b/lib/core/settings.py index 94ab0b540..98d618feb 100644 --- a/lib/core/settings.py +++ b/lib/core/settings.py @@ -921,29 +921,163 @@ HTTP_CHUNKED_SPLIT_KEYWORDS = ("SELECT", "UPDATE", "INSERT", "FROM", "LOAD_FILE" # CSS style used in HTML dump format HTML_DUMP_CSS_STYLE = """""" +HTML_DUMP_CSS_SORTABLE_STYLE = """ + +""" +HTML_DUMP_SORTABLE_JAVASCRIPT = """""" # Leaving (dirty) possibility to change values from here (e.g. `export SQLMAP__MAX_NUMBER_OF_THREADS=20`) for key, value in os.environ.items(): if key.upper().startswith("%s_" % SQLMAP_ENVIRONMENT_PREFIX): diff --git a/sqlmap.conf b/sqlmap.conf index d42ab8031..7785ca0ac 100644 --- a/sqlmap.conf +++ b/sqlmap.conf @@ -758,9 +758,10 @@ csvDel = , dumpFile = # Format of dumped data -# Valid: CSV, HTML or SQLITE +# Valid: CSV, HTML, SORTABLE_HTML or SQLITE dumpFormat = CSV +dumpSortable = False # Force character encoding used for data retrieval. encoding = diff --git a/sqlmap.py b/sqlmap.py index d2ccee745..b77b39648 100755 --- a/sqlmap.py +++ b/sqlmap.py @@ -158,6 +158,12 @@ def main(): if checkPipedInput(): conf.batch = True + if conf.get("dumpFormat") == "SORTABLE_HTML": + conf.dumpFormat = "HTML" + conf.dumpSortable = True + else: + conf.dumpSortable = False + if conf.get("api"): # heavy imports from lib.utils.api import StdDbOut