mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-07-01 10:23:41 +03:00
Minor update
This commit is contained in:
parent
35e575c287
commit
452915ed4a
|
@ -56,6 +56,12 @@ class BigArray(list):
|
||||||
>>> _[20] = 0
|
>>> _[20] = 0
|
||||||
>>> _[99999]
|
>>> _[99999]
|
||||||
99999
|
99999
|
||||||
|
>>> _ += [0]
|
||||||
|
>>> _[100000]
|
||||||
|
0
|
||||||
|
>>> _ = _ + [1]
|
||||||
|
>>> _[-1]
|
||||||
|
1
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, items=None):
|
def __init__(self, items=None):
|
||||||
|
@ -69,6 +75,20 @@ class BigArray(list):
|
||||||
for item in (items or []):
|
for item in (items or []):
|
||||||
self.append(item)
|
self.append(item)
|
||||||
|
|
||||||
|
def __add__(self, value):
|
||||||
|
retval = BigArray(self)
|
||||||
|
|
||||||
|
for _ in value:
|
||||||
|
retval.append(_)
|
||||||
|
|
||||||
|
return retval
|
||||||
|
|
||||||
|
def __iadd__(self, value):
|
||||||
|
for _ in value:
|
||||||
|
self.append(_)
|
||||||
|
|
||||||
|
return self
|
||||||
|
|
||||||
def append(self, value):
|
def append(self, value):
|
||||||
self.chunks[-1].append(value)
|
self.chunks[-1].append(value)
|
||||||
|
|
||||||
|
@ -145,7 +165,7 @@ class BigArray(list):
|
||||||
self.chunks, self.filenames = state
|
self.chunks, self.filenames = state
|
||||||
|
|
||||||
def __getitem__(self, y):
|
def __getitem__(self, y):
|
||||||
if y < 0:
|
while y < 0:
|
||||||
y += len(self)
|
y += len(self)
|
||||||
|
|
||||||
index = y // self.chunk_length
|
index = y // self.chunk_length
|
||||||
|
|
|
@ -19,7 +19,7 @@ from lib.core.enums import OS
|
||||||
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.5.5.4"
|
VERSION = "1.5.5.5"
|
||||||
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)
|
||||||
|
@ -106,7 +106,7 @@ FUZZ_UNION_ERROR_REGEX = r"(?i)data\s?type|comparable|compatible|conversion|conv
|
||||||
FUZZ_UNION_MAX_COLUMNS = 10
|
FUZZ_UNION_MAX_COLUMNS = 10
|
||||||
|
|
||||||
# Regular expression used for recognition of generic maximum connection messages
|
# Regular expression used for recognition of generic maximum connection messages
|
||||||
MAX_CONNECTIONS_REGEX = r"\bmax.+?\bconnection"
|
MAX_CONNECTIONS_REGEX = r"\bmax.{1,100}\bconnection"
|
||||||
|
|
||||||
# Maximum consecutive connection errors before asking the user if he wants to continue
|
# Maximum consecutive connection errors before asking the user if he wants to continue
|
||||||
MAX_CONSECUTIVE_CONNECTION_ERRORS = 15
|
MAX_CONSECUTIVE_CONNECTION_ERRORS = 15
|
||||||
|
|
|
@ -45,10 +45,10 @@ class Fingerprint(GenericFingerprint):
|
||||||
# Reference: https://dev.mysql.com/doc/relnotes/mysql/<major>.<minor>/en/
|
# Reference: https://dev.mysql.com/doc/relnotes/mysql/<major>.<minor>/en/
|
||||||
|
|
||||||
versions = (
|
versions = (
|
||||||
(80000, 80021), # MySQL 8.0
|
(80000, 80028), # MySQL 8.0
|
||||||
(60000, 60014), # MySQL 6.0
|
(60000, 60014), # MySQL 6.0
|
||||||
(50700, 50731), # MySQL 5.7
|
(50700, 50736), # MySQL 5.7
|
||||||
(50600, 50649), # MySQL 5.6
|
(50600, 50652), # MySQL 5.6
|
||||||
(50500, 50563), # MySQL 5.5
|
(50500, 50563), # MySQL 5.5
|
||||||
(50400, 50404), # MySQL 5.4
|
(50400, 50404), # MySQL 5.4
|
||||||
(50100, 50174), # MySQL 5.1
|
(50100, 50174), # MySQL 5.1
|
||||||
|
|
|
@ -105,7 +105,7 @@ class Fingerprint(GenericFingerprint):
|
||||||
logger.info(infoMsg)
|
logger.info(infoMsg)
|
||||||
|
|
||||||
# Reference: https://en.wikipedia.org/wiki/Oracle_Database
|
# Reference: https://en.wikipedia.org/wiki/Oracle_Database
|
||||||
for version in ("19c", "18c", "12c", "11g", "10g", "9i", "8i", "7"):
|
for version in ("21c", "19c", "18c", "12c", "11g", "10g", "9i", "8i", "7"):
|
||||||
number = int(re.search(r"([\d]+)", version).group(1))
|
number = int(re.search(r"([\d]+)", version).group(1))
|
||||||
output = inject.checkBooleanExpression("%d=(SELECT SUBSTR((VERSION),1,%d) FROM SYS.PRODUCT_COMPONENT_VERSION WHERE ROWNUM=1)" % (number, 1 if number < 10 else 2))
|
output = inject.checkBooleanExpression("%d=(SELECT SUBSTR((VERSION),1,%d) FROM SYS.PRODUCT_COMPONENT_VERSION WHERE ROWNUM=1)" % (number, 1 if number < 10 else 2))
|
||||||
|
|
||||||
|
|
|
@ -131,7 +131,9 @@ class Fingerprint(GenericFingerprint):
|
||||||
infoMsg = "actively fingerprinting %s" % DBMS.PGSQL
|
infoMsg = "actively fingerprinting %s" % DBMS.PGSQL
|
||||||
logger.info(infoMsg)
|
logger.info(infoMsg)
|
||||||
|
|
||||||
if inject.checkBooleanExpression("SINH(0)=0"):
|
if inject.checkBooleanExpression("GEN_RANDOM_UUID() IS NOT NULL"):
|
||||||
|
Backend.setVersion(">= 13.0")
|
||||||
|
elif inject.checkBooleanExpression("SINH(0)=0"):
|
||||||
Backend.setVersion(">= 12.0")
|
Backend.setVersion(">= 12.0")
|
||||||
elif inject.checkBooleanExpression("SHA256(NULL) IS NULL"):
|
elif inject.checkBooleanExpression("SHA256(NULL) IS NULL"):
|
||||||
Backend.setVersion(">= 11.0")
|
Backend.setVersion(">= 11.0")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user