Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sqlmapproject
GitHub Repository: sqlmapproject/sqlmap
Path: blob/master/plugins/dbms/mckoi/fingerprint.py
2992 views
1
#!/usr/bin/env python
2
3
"""
4
Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
5
See the file 'LICENSE' for copying permission
6
"""
7
8
from lib.core.common import Backend
9
from lib.core.common import Format
10
from lib.core.data import conf
11
from lib.core.data import kb
12
from lib.core.data import logger
13
from lib.core.enums import DBMS
14
from lib.core.session import setDbms
15
from lib.core.settings import MCKOI_ALIASES
16
from lib.core.settings import MCKOI_DEFAULT_SCHEMA
17
from lib.request import inject
18
from plugins.generic.fingerprint import Fingerprint as GenericFingerprint
19
20
class Fingerprint(GenericFingerprint):
21
def __init__(self):
22
GenericFingerprint.__init__(self, DBMS.MCKOI)
23
24
def getFingerprint(self):
25
value = ""
26
wsOsFp = Format.getOs("web server", kb.headersFp)
27
28
if wsOsFp:
29
value += "%s\n" % wsOsFp
30
31
if kb.data.banner:
32
dbmsOsFp = Format.getOs("back-end DBMS", kb.bannerFp)
33
34
if dbmsOsFp:
35
value += "%s\n" % dbmsOsFp
36
37
value += "back-end DBMS: "
38
39
if not conf.extensiveFp:
40
value += DBMS.MCKOI
41
return value
42
43
actVer = Format.getDbms()
44
blank = " " * 15
45
value += "active fingerprint: %s" % actVer
46
47
if kb.bannerFp:
48
banVer = kb.bannerFp.get("dbmsVersion")
49
50
if banVer:
51
banVer = Format.getDbms([banVer])
52
value += "\n%sbanner parsing fingerprint: %s" % (blank, banVer)
53
54
htmlErrorFp = Format.getErrorParsedDBMSes()
55
56
if htmlErrorFp:
57
value += "\n%shtml error message fingerprint: %s" % (blank, htmlErrorFp)
58
59
return value
60
61
def checkDbms(self):
62
if not conf.extensiveFp and Backend.isDbmsWithin(MCKOI_ALIASES):
63
setDbms(DBMS.MCKOI)
64
return True
65
66
infoMsg = "testing %s" % DBMS.MCKOI
67
logger.info(infoMsg)
68
69
result = inject.checkBooleanExpression("DATEOB()>=DATEOB(NULL)")
70
71
if result:
72
infoMsg = "confirming %s" % DBMS.MCKOI
73
logger.info(infoMsg)
74
75
result = inject.checkBooleanExpression("ABS(1/0)>ABS(0/1)")
76
77
if not result:
78
warnMsg = "the back-end DBMS is not %s" % DBMS.MCKOI
79
logger.warning(warnMsg)
80
81
return False
82
83
setDbms(DBMS.MCKOI)
84
85
return True
86
else:
87
warnMsg = "the back-end DBMS is not %s" % DBMS.MCKOI
88
logger.warning(warnMsg)
89
90
return False
91
92
def forceDbmsEnum(self):
93
conf.db = MCKOI_DEFAULT_SCHEMA
94
95