2121from lib .core .data import queries
2222from lib .core .datatype import advancedDict
2323from lib .core .exception import sqlmapNoneDataException
24+ from lib .core .settings import DBMS
2425from lib .core .settings import PAYLOAD_DELIMITER
2526
2627class Agent :
@@ -219,7 +220,7 @@ def nullAndCastField(self, field):
219220
220221 # SQLite version 2 does not support neither CAST() nor IFNULL(),
221222 # introduced only in SQLite version 3
222- if kb .dbms == "SQLite" :
223+ if kb .dbms == DBMS . SQLITE :
223224 return field
224225
225226 if field .startswith ("(CASE" ):
@@ -324,13 +325,13 @@ def getFields(self, query):
324325 def simpleConcatQuery (self , query1 , query2 ):
325326 concatenatedQuery = ""
326327
327- if kb .dbms == "MySQL" :
328+ if kb .dbms == DBMS . MYSQL :
328329 concatenatedQuery = "CONCAT(%s,%s)" % (query1 , query2 )
329330
330- elif kb .dbms in ( "PostgreSQL" , "Oracle" , "SQLite" ):
331+ elif kb .dbms in ( DBMS . POSTGRESQL , DBMS . ORACLE , DBMS . SQLITE ):
331332 concatenatedQuery = "%s||%s" % (query1 , query2 )
332333
333- elif kb .dbms == "Microsoft SQL Server" :
334+ elif kb .dbms == DBMS . MSSQL :
334335 concatenatedQuery = "%s+%s" % (query1 , query2 )
335336
336337 return concatenatedQuery
@@ -372,7 +373,7 @@ def concatQuery(self, query, unpack=True):
372373 concatenatedQuery = query
373374 fieldsSelectFrom , fieldsSelect , fieldsNoSelect , fieldsSelectTop , fieldsSelectCase , _ , fieldsToCastStr = self .getFields (query )
374375
375- if kb .dbms == "MySQL" :
376+ if kb .dbms == DBMS . MYSQL :
376377 if fieldsSelectCase :
377378 concatenatedQuery = concatenatedQuery .replace ("SELECT " , "CONCAT('%s'," % kb .misc .start , 1 )
378379 concatenatedQuery += ",'%s')" % kb .misc .stop
@@ -385,7 +386,7 @@ def concatQuery(self, query, unpack=True):
385386 elif fieldsNoSelect :
386387 concatenatedQuery = "CONCAT('%s',%s,'%s')" % (kb .misc .start , concatenatedQuery , kb .misc .stop )
387388
388- elif kb .dbms in ( "PostgreSQL" , "Oracle" , "SQLite" ):
389+ elif kb .dbms in ( DBMS . POSTGRESQL , DBMS . ORACLE , DBMS . SQLITE ):
389390 if fieldsSelectCase :
390391 concatenatedQuery = concatenatedQuery .replace ("SELECT " , "'%s'||" % kb .misc .start , 1 )
391392 concatenatedQuery += "||'%s'" % kb .misc .stop
@@ -398,10 +399,10 @@ def concatQuery(self, query, unpack=True):
398399 elif fieldsNoSelect :
399400 concatenatedQuery = "'%s'||%s||'%s'" % (kb .misc .start , concatenatedQuery , kb .misc .stop )
400401
401- if kb .dbms == "Oracle" and " FROM " not in concatenatedQuery and ( fieldsSelect or fieldsNoSelect ):
402+ if kb .dbms == DBMS . ORACLE and " FROM " not in concatenatedQuery and ( fieldsSelect or fieldsNoSelect ):
402403 concatenatedQuery += " FROM DUAL"
403404
404- elif kb .dbms == "Microsoft SQL Server" :
405+ elif kb .dbms == DBMS . MSSQL :
405406 if fieldsSelectTop :
406407 topNum = re .search ("\ASELECT\s+TOP\s+([\d]+)\s+" , concatenatedQuery , re .I ).group (1 )
407408 concatenatedQuery = concatenatedQuery .replace ("SELECT TOP %s " % topNum , "TOP %s '%s'+" % (topNum , kb .misc .start ), 1 )
@@ -467,7 +468,7 @@ def forgeInbandQuery(self, query, exprPosition=None, nullChar="NULL"):
467468 intoRegExp = intoRegExp .group (1 )
468469 query = query [:query .index (intoRegExp )]
469470
470- if kb .dbms == "Oracle" and inbandQuery .endswith (" FROM DUAL" ):
471+ if kb .dbms == DBMS . ORACLE and inbandQuery .endswith (" FROM DUAL" ):
471472 inbandQuery = inbandQuery [:- len (" FROM DUAL" )]
472473
473474 for element in range (kb .unionCount ):
@@ -487,7 +488,7 @@ def forgeInbandQuery(self, query, exprPosition=None, nullChar="NULL"):
487488 conditionIndex = query .index (" FROM " )
488489 inbandQuery += query [conditionIndex :]
489490
490- if kb .dbms == "Oracle" :
491+ if kb .dbms == DBMS . ORACLE :
491492 if " FROM " not in inbandQuery :
492493 inbandQuery += " FROM DUAL"
493494
@@ -531,11 +532,11 @@ def limitQuery(self, num, query, field=None):
531532 limitStr = queries [kb .dbms ].limit .query % (num , 1 )
532533 limitedQuery += " %s" % limitStr
533534
534- elif kb .dbms == "Firebird" :
535+ elif kb .dbms == DBMS . FIREBIRD :
535536 limitStr = queries [kb .dbms ].limit .query % (num + 1 , num + 1 )
536537 limitedQuery += " %s" % limitStr
537538
538- elif kb .dbms == "Oracle" :
539+ elif kb .dbms == DMBS . ORACLE :
539540 if " ORDER BY " in limitedQuery and "(SELECT " in limitedQuery :
540541 orderBy = limitedQuery [limitedQuery .index (" ORDER BY " ):]
541542 limitedQuery = limitedQuery [:limitedQuery .index (" ORDER BY " )]
@@ -547,7 +548,7 @@ def limitQuery(self, num, query, field=None):
547548 limitedQuery = limitedQuery % fromFrom
548549 limitedQuery += "=%d" % (num + 1 )
549550
550- elif kb .dbms == "Microsoft SQL Server" :
551+ elif kb .dbms == DBMS . MSSQL :
551552 forgeNotIn = True
552553
553554 if " ORDER BY " in limitedQuery :
0 commit comments