MCPcopy Create free account
hub / github.com/sqlmapproject/sqlmap / checkDbmsOs

Method checkDbmsOs

plugins/dbms/mssqlserver/fingerprint.py:126–205  ·  view source on GitHub ↗
(self, detailed=False)

Source from the content-addressed store, hash-verified

124 return False
125
126 def checkDbmsOs(self, detailed=False):
127 if Backend.getOs() and Backend.getOsVersion() and Backend.getOsServicePack():
128 return
129
130 if not Backend.getOs():
131 Backend.setOs(OS.WINDOWS)
132
133 if not detailed:
134 return
135
136 infoMsg = "fingerprinting the back-end DBMS operating system "
137 infoMsg += "version and service pack"
138 logger.info(infoMsg)
139
140 infoMsg = "the back-end DBMS operating system is %s" % Backend.getOs()
141
142 self.createSupportTbl(self.fileTblName, self.tblField, "varchar(1000)")
143 inject.goStacked("INSERT INTO %s(%s) VALUES (%s)" % (self.fileTblName, self.tblField, "@@VERSION"))
144
145 # Reference: https://en.wikipedia.org/wiki/Comparison_of_Microsoft_Windows_versions
146 # https://en.wikipedia.org/wiki/Windows_NT#Releases
147 versions = {
148 "NT": ("4.0", (6, 5, 4, 3, 2, 1)),
149 "2000": ("5.0", (4, 3, 2, 1)),
150 "XP": ("5.1", (3, 2, 1)),
151 "2003": ("5.2", (2, 1)),
152 "Vista or 2008": ("6.0", (2, 1)),
153 "7 or 2008 R2": ("6.1", (1, 0)),
154 "8 or 2012": ("6.2", (0,)),
155 "8.1 or 2012 R2": ("6.3", (0,)),
156 "10 or 11 or 2016 or 2019 or 2022": ("10.0", (0,))
157 }
158
159 # Get back-end DBMS underlying operating system version
160 for version, data in versions.items():
161 query = "EXISTS(SELECT %s FROM %s WHERE %s " % (self.tblField, self.fileTblName, self.tblField)
162 query += "LIKE '%Windows NT " + data[0] + "%')"
163 result = inject.checkBooleanExpression(query)
164
165 if result:
166 Backend.setOsVersion(version)
167 infoMsg += " %s" % Backend.getOsVersion()
168 break
169
170 if not Backend.getOsVersion():
171 Backend.setOsVersion("2003")
172 Backend.setOsServicePack(2)
173
174 warnMsg = "unable to fingerprint the underlying operating "
175 warnMsg += "system version, assuming it is Windows "
176 warnMsg += "%s Service Pack %d" % (Backend.getOsVersion(), Backend.getOsServicePack())
177 logger.warning(warnMsg)
178
179 self.cleanup(onlyFileTbl=True)
180
181 return
182
183 # Get back-end DBMS underlying operating system service pack

Callers

nothing calls this directly

Calls 12

getUnicodeFunction · 0.90
getOsVersionMethod · 0.80
getOsServicePackMethod · 0.80
setOsMethod · 0.80
infoMethod · 0.80
createSupportTblMethod · 0.80
itemsMethod · 0.80
setOsVersionMethod · 0.80
setOsServicePackMethod · 0.80
cleanupMethod · 0.80
debugMethod · 0.80
getOsMethod · 0.45

Tested by

no test coverage detected