Implements option --time-limit (#5502)

This commit is contained in:
Miroslav Stampar 2023-09-28 20:34:52 +02:00
parent c629374858
commit e0ec2fcdbd
6 changed files with 16 additions and 3 deletions

View File

@ -16,6 +16,7 @@ import codecs
import json import json
import re import re
import sys import sys
import time
from lib.core.bigarray import BigArray from lib.core.bigarray import BigArray
from lib.core.compat import xrange from lib.core.compat import xrange
@ -334,6 +335,10 @@ def getUnicode(value, encoding=None, noneToNull=False):
True True
""" """
# Best position for --time-limit mechanism
if conf.get("timeLimit") and kb.get("startTime") and (time.time() - kb.startTime > conf.timeLimit):
raise SystemExit
if noneToNull and value is None: if noneToNull and value is None:
return NULL return NULL

View File

@ -2171,6 +2171,7 @@ def _setKnowledgeBaseAttributes(flushAll=True):
kb.smokeMode = False kb.smokeMode = False
kb.reduceTests = None kb.reduceTests = None
kb.sslSuccess = False kb.sslSuccess = False
kb.startTime = time.time()
kb.stickyDBMS = False kb.stickyDBMS = False
kb.suppressResumeInfo = False kb.suppressResumeInfo = False
kb.tableFrom = None kb.tableFrom = None

View File

@ -239,6 +239,7 @@ optDict = {
"skipWaf": "boolean", "skipWaf": "boolean",
"testFilter": "string", "testFilter": "string",
"testSkip": "string", "testSkip": "string",
"timeLimit": "float",
"webRoot": "string", "webRoot": "string",
}, },

View File

@ -20,7 +20,7 @@ from thirdparty import six
from thirdparty.six import unichr as _unichr from thirdparty.six import unichr as _unichr
# sqlmap version (<major>.<minor>.<month>.<monthly commit>) # sqlmap version (<major>.<minor>.<month>.<monthly commit>)
VERSION = "1.7.9.2" VERSION = "1.7.9.3"
TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable" TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable"
TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34} 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) VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE)

View File

@ -736,6 +736,9 @@ def cmdLineParser(argv=None):
general.add_argument("--test-skip", dest="testSkip", general.add_argument("--test-skip", dest="testSkip",
help="Skip tests by payloads and/or titles (e.g. BENCHMARK)") help="Skip tests by payloads and/or titles (e.g. BENCHMARK)")
general.add_argument("--time-limit", dest="timeLimit", type=float,
help="Run with a time limit in seconds (e.g. 3600)")
general.add_argument("--web-root", dest="webRoot", general.add_argument("--web-root", dest="webRoot",
help="Web server document root directory (e.g. \"/var/www\")") help="Web server document root directory (e.g. \"/var/www\")")

View File

@ -820,12 +820,15 @@ skipWaf = False
# Default: sqlmap # Default: sqlmap
tablePrefix = sqlmap tablePrefix = sqlmap
# Select tests by payloads and/or titles (e.g. ROW) # Select tests by payloads and/or titles (e.g. ROW).
testFilter = testFilter =
# Skip tests by payloads and/or titles (e.g. BENCHMARK) # Skip tests by payloads and/or titles (e.g. BENCHMARK).
testSkip = testSkip =
# Run with a time limit in seconds (e.g. 3600).
timeLimit =
# Web server document root directory (e.g. "/var/www"). # Web server document root directory (e.g. "/var/www").
webRoot = webRoot =