mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-01-25 00:34:28 +03:00
Minor optimizations
This commit is contained in:
parent
b2d6ab2949
commit
615ac3b733
|
@ -18,7 +18,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.4.1.50"
|
VERSION = "1.4.1.51"
|
||||||
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)
|
||||||
|
|
|
@ -45,54 +45,43 @@ 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 = (
|
||||||
(32200, 32235), # MySQL 3.22
|
|
||||||
(32300, 32359), # MySQL 3.23
|
|
||||||
(40000, 40032), # MySQL 4.0
|
|
||||||
(40100, 40131), # MySQL 4.1
|
|
||||||
(50000, 50097), # MySQL 5.0
|
|
||||||
(50100, 50174), # MySQL 5.1
|
|
||||||
(50400, 50404), # MySQL 5.4
|
|
||||||
(50500, 50562), # MySQL 5.5
|
|
||||||
(50600, 50648), # MySQL 5.6
|
|
||||||
(50700, 50730), # MySQL 5.7
|
|
||||||
(60000, 60014), # MySQL 6.0
|
|
||||||
(80000, 80021), # MySQL 8.0
|
(80000, 80021), # MySQL 8.0
|
||||||
|
(60000, 60014), # MySQL 6.0
|
||||||
|
(50700, 50731), # MySQL 5.7
|
||||||
|
(50600, 50649), # MySQL 5.6
|
||||||
|
(50500, 50563), # MySQL 5.5
|
||||||
|
(50400, 50404), # MySQL 5.4
|
||||||
|
(50100, 50174), # MySQL 5.1
|
||||||
|
(50000, 50097), # MySQL 5.0
|
||||||
|
(40100, 40131), # MySQL 4.1
|
||||||
|
(40000, 40032), # MySQL 4.0
|
||||||
|
(32300, 32359), # MySQL 3.23
|
||||||
|
(32200, 32235), # MySQL 3.22
|
||||||
)
|
)
|
||||||
|
|
||||||
index = -1
|
found = False
|
||||||
for i in xrange(len(versions)):
|
for candidate in versions:
|
||||||
element = versions[i]
|
result = inject.checkBooleanExpression("[RANDNUM]=[RANDNUM]/*!%d AND [RANDNUM1]=[RANDNUM2]*/" % candidate[0])
|
||||||
version = element[0]
|
|
||||||
version = getUnicode(version)
|
|
||||||
result = inject.checkBooleanExpression("[RANDNUM]=[RANDNUM]/*!%s AND [RANDNUM1]=[RANDNUM2]*/" % version)
|
|
||||||
|
|
||||||
if result:
|
if not result:
|
||||||
|
found = True
|
||||||
break
|
break
|
||||||
else:
|
|
||||||
index += 1
|
|
||||||
|
|
||||||
if index >= 0:
|
if found:
|
||||||
prevVer = None
|
for version in xrange(candidate[1], candidate[0] - 1, -1):
|
||||||
|
|
||||||
for version in xrange(versions[index][0], versions[index][1] + 1):
|
|
||||||
version = getUnicode(version)
|
version = getUnicode(version)
|
||||||
result = inject.checkBooleanExpression("[RANDNUM]=[RANDNUM]/*!%s AND [RANDNUM1]=[RANDNUM2]*/" % version)
|
result = inject.checkBooleanExpression("[RANDNUM]=[RANDNUM]/*!%s AND [RANDNUM1]=[RANDNUM2]*/" % version)
|
||||||
|
|
||||||
if result:
|
if not result:
|
||||||
if not prevVer:
|
|
||||||
prevVer = version
|
|
||||||
|
|
||||||
if version[0] == "3":
|
if version[0] == "3":
|
||||||
midVer = prevVer[1:3]
|
midVer = version[1:3]
|
||||||
else:
|
else:
|
||||||
midVer = prevVer[2]
|
midVer = version[2]
|
||||||
|
|
||||||
trueVer = "%s.%s.%s" % (prevVer[0], midVer, prevVer[3:])
|
trueVer = "%s.%s.%s" % (version[0], midVer, version[3:])
|
||||||
|
|
||||||
return trueVer
|
return trueVer
|
||||||
|
|
||||||
prevVer = version
|
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def getFingerprint(self):
|
def getFingerprint(self):
|
||||||
|
|
|
@ -115,7 +115,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("SHA256(NULL) IS NULL"):
|
if inject.checkBooleanExpression("SINH(0)=0"):
|
||||||
|
Backend.setVersion(">= 12.0")
|
||||||
|
elif inject.checkBooleanExpression("SHA256(NULL) IS NULL"):
|
||||||
Backend.setVersion(">= 11.0")
|
Backend.setVersion(">= 11.0")
|
||||||
elif inject.checkBooleanExpression("XMLTABLE(NULL) IS NULL"):
|
elif inject.checkBooleanExpression("XMLTABLE(NULL) IS NULL"):
|
||||||
Backend.setVersionList([">= 10.0", "< 11.0"])
|
Backend.setVersionList([">= 10.0", "< 11.0"])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user