1111
1212from xml .etree import ElementTree as ET
1313
14+ from lib .core .common import backend
1415from lib .core .common import getCompiledRegex
15- from lib .core .common import getErrorParsedDBMSes
16- from lib .core .common import getIdentifiedDBMS
1716from lib .core .common import isDBMSVersionAtLeast
1817from lib .core .common import isTechniqueAvailable
1918from lib .core .common import randomInt
@@ -206,8 +205,8 @@ def cleanupPayload(self, payload, origvalue=None, query=None):
206205 payload = payload .replace ("[ORIGVALUE]" , origvalue )
207206
208207 if "[INFERENCE]" in payload :
209- if getIdentifiedDBMS () is not None :
210- inference = queries [getIdentifiedDBMS ()].inference
208+ if backend . getIdentifiedDbms () is not None :
209+ inference = queries [backend . getIdentifiedDbms ()].inference
211210
212211 if "dbms_version" in inference :
213212 if isDBMSVersionAtLeast (inference .dbms_version ):
@@ -265,17 +264,17 @@ def nullAndCastField(self, field):
265264
266265 # SQLite version 2 does not support neither CAST() nor IFNULL(),
267266 # introduced only in SQLite version 3
268- if getIdentifiedDBMS () == DBMS .SQLITE :
267+ if backend . getIdentifiedDbms () == DBMS .SQLITE :
269268 return field
270269
271270 if field .startswith ("(CASE" ):
272271 nulledCastedField = field
273272 else :
274- nulledCastedField = queries [getIdentifiedDBMS ()].cast .query % field
275- if getIdentifiedDBMS () == DBMS .ACCESS :
276- nulledCastedField = queries [getIdentifiedDBMS ()].isnull .query % (nulledCastedField , nulledCastedField )
273+ nulledCastedField = queries [backend . getIdentifiedDbms ()].cast .query % field
274+ if backend . getIdentifiedDbms () == DBMS .ACCESS :
275+ nulledCastedField = queries [backend . getIdentifiedDbms ()].isnull .query % (nulledCastedField , nulledCastedField )
277276 else :
278- nulledCastedField = queries [getIdentifiedDBMS ()].isnull .query % nulledCastedField
277+ nulledCastedField = queries [backend . getIdentifiedDbms ()].isnull .query % nulledCastedField
279278
280279 return nulledCastedField
281280
@@ -309,12 +308,12 @@ def nullCastConcatFields(self, fields):
309308 @rtype: C{str}
310309 """
311310
312- if not kb . dbmsDetected :
311+ if not backend . getDbms () :
313312 return fields
314313
315314 fields = fields .replace (", " , "," )
316315 fieldsSplitted = fields .split ("," )
317- dbmsDelimiter = queries [getIdentifiedDBMS ()].delimiter .query
316+ dbmsDelimiter = queries [backend . getIdentifiedDbms ()].delimiter .query
318317 nulledCastedFields = []
319318
320319 for field in fieldsSplitted :
@@ -377,13 +376,13 @@ def getFields(self, query):
377376 def simpleConcatQuery (self , query1 , query2 ):
378377 concatenatedQuery = ""
379378
380- if getIdentifiedDBMS () == DBMS .MYSQL :
379+ if backend . getIdentifiedDbms () == DBMS .MYSQL :
381380 concatenatedQuery = "CONCAT(%s,%s)" % (query1 , query2 )
382381
383- elif getIdentifiedDBMS () in (DBMS .PGSQL , DBMS .ORACLE , DBMS .SQLITE ):
382+ elif backend . getIdentifiedDbms () in (DBMS .PGSQL , DBMS .ORACLE , DBMS .SQLITE ):
384383 concatenatedQuery = "%s||%s" % (query1 , query2 )
385384
386- elif getIdentifiedDBMS () in (DBMS .MSSQL , DBMS .SYBASE ):
385+ elif backend . getIdentifiedDbms () in (DBMS .MSSQL , DBMS .SYBASE ):
387386 concatenatedQuery = "%s+%s" % (query1 , query2 )
388387
389388 return concatenatedQuery
@@ -425,7 +424,7 @@ def concatQuery(self, query, unpack=True):
425424 concatenatedQuery = query
426425 fieldsSelectFrom , fieldsSelect , fieldsNoSelect , fieldsSelectTop , fieldsSelectCase , _ , fieldsToCastStr , fieldsExists = self .getFields (query )
427426
428- if getIdentifiedDBMS () == DBMS .MYSQL :
427+ if backend . getIdentifiedDbms () == DBMS .MYSQL :
429428 if fieldsExists :
430429 concatenatedQuery = concatenatedQuery .replace ("SELECT " , "CONCAT('%s'," % kb .misc .start , 1 )
431430 concatenatedQuery += ",'%s')" % kb .misc .stop
@@ -438,7 +437,7 @@ def concatQuery(self, query, unpack=True):
438437 elif fieldsNoSelect :
439438 concatenatedQuery = "CONCAT('%s',%s,'%s')" % (kb .misc .start , concatenatedQuery , kb .misc .stop )
440439
441- elif getIdentifiedDBMS () in (DBMS .PGSQL , DBMS .ORACLE , DBMS .SQLITE ):
440+ elif backend . getIdentifiedDbms () in (DBMS .PGSQL , DBMS .ORACLE , DBMS .SQLITE ):
442441 if fieldsExists :
443442 concatenatedQuery = concatenatedQuery .replace ("SELECT " , "'%s'||" % kb .misc .start , 1 )
444443 concatenatedQuery += "||'%s'" % kb .misc .stop
@@ -451,10 +450,10 @@ def concatQuery(self, query, unpack=True):
451450 elif fieldsNoSelect :
452451 concatenatedQuery = "'%s'||%s||'%s'" % (kb .misc .start , concatenatedQuery , kb .misc .stop )
453452
454- if getIdentifiedDBMS () == DBMS .ORACLE and " FROM " not in concatenatedQuery and (fieldsSelect or fieldsNoSelect ):
453+ if backend . getIdentifiedDbms () == DBMS .ORACLE and " FROM " not in concatenatedQuery and (fieldsSelect or fieldsNoSelect ):
455454 concatenatedQuery += " FROM DUAL"
456455
457- elif getIdentifiedDBMS () in (DBMS .MSSQL , DBMS .SYBASE ):
456+ elif backend . getIdentifiedDbms () in (DBMS .MSSQL , DBMS .SYBASE ):
458457 if fieldsExists :
459458 concatenatedQuery = concatenatedQuery .replace ("SELECT " , "'%s'+" % kb .misc .start , 1 )
460459 concatenatedQuery += "+'%s'" % kb .misc .stop
@@ -520,8 +519,8 @@ def forgeInbandQuery(self, query, position, count, comment, prefix, suffix, char
520519 intoRegExp = intoRegExp .group (1 )
521520 query = query [:query .index (intoRegExp )]
522521
523- if getIdentifiedDBMS () in FROM_TABLE and inbandQuery .endswith (FROM_TABLE [getIdentifiedDBMS ()]):
524- inbandQuery = inbandQuery [:- len (FROM_TABLE [getIdentifiedDBMS ()])]
522+ if backend . getIdentifiedDbms () in FROM_TABLE and inbandQuery .endswith (FROM_TABLE [backend . getIdentifiedDbms ()]):
523+ inbandQuery = inbandQuery [:- len (FROM_TABLE [backend . getIdentifiedDbms ()])]
525524
526525 for element in range (count ):
527526 if element > 0 :
@@ -540,9 +539,9 @@ def forgeInbandQuery(self, query, position, count, comment, prefix, suffix, char
540539 conditionIndex = query .index (" FROM " )
541540 inbandQuery += query [conditionIndex :]
542541
543- if getIdentifiedDBMS () in FROM_TABLE :
542+ if backend . getIdentifiedDbms () in FROM_TABLE :
544543 if " FROM " not in inbandQuery :
545- inbandQuery += FROM_TABLE [getIdentifiedDBMS ()]
544+ inbandQuery += FROM_TABLE [backend . getIdentifiedDbms ()]
546545
547546 if intoRegExp :
548547 inbandQuery += intoRegExp
@@ -559,8 +558,8 @@ def forgeInbandQuery(self, query, position, count, comment, prefix, suffix, char
559558 else :
560559 inbandQuery += char
561560
562- if getIdentifiedDBMS () in FROM_TABLE :
563- inbandQuery += FROM_TABLE [getIdentifiedDBMS ()]
561+ if backend . getIdentifiedDbms () in FROM_TABLE :
562+ inbandQuery += FROM_TABLE [backend . getIdentifiedDbms ()]
564563
565564 inbandQuery = self .suffixQuery (inbandQuery , comment , suffix )
566565
@@ -589,21 +588,21 @@ def limitQuery(self, num, query, field=None):
589588 """
590589
591590 limitedQuery = query
592- limitStr = queries [getIdentifiedDBMS ()].limit .query
591+ limitStr = queries [backend . getIdentifiedDbms ()].limit .query
593592 fromIndex = limitedQuery .index (" FROM " )
594593 untilFrom = limitedQuery [:fromIndex ]
595594 fromFrom = limitedQuery [fromIndex + 1 :]
596595 orderBy = False
597596
598- if getIdentifiedDBMS () in (DBMS .MYSQL , DBMS .PGSQL , DBMS .SQLITE ):
599- limitStr = queries [getIdentifiedDBMS ()].limit .query % (num , 1 )
597+ if backend . getIdentifiedDbms () in (DBMS .MYSQL , DBMS .PGSQL , DBMS .SQLITE ):
598+ limitStr = queries [backend . getIdentifiedDbms ()].limit .query % (num , 1 )
600599 limitedQuery += " %s" % limitStr
601600
602- elif getIdentifiedDBMS () == DBMS .FIREBIRD :
603- limitStr = queries [getIdentifiedDBMS ()].limit .query % (num + 1 , num + 1 )
601+ elif backend . getIdentifiedDbms () == DBMS .FIREBIRD :
602+ limitStr = queries [backend . getIdentifiedDbms ()].limit .query % (num + 1 , num + 1 )
604603 limitedQuery += " %s" % limitStr
605604
606- elif getIdentifiedDBMS () == DBMS .ORACLE :
605+ elif backend . getIdentifiedDbms () == DBMS .ORACLE :
607606 if " ORDER BY " in limitedQuery and "(SELECT " in limitedQuery :
608607 orderBy = limitedQuery [limitedQuery .index (" ORDER BY " ):]
609608 limitedQuery = limitedQuery [:limitedQuery .index (" ORDER BY " )]
@@ -615,7 +614,7 @@ def limitQuery(self, num, query, field=None):
615614 limitedQuery = limitedQuery % fromFrom
616615 limitedQuery += "=%d" % (num + 1 )
617616
618- elif getIdentifiedDBMS () in (DBMS .MSSQL , DBMS .SYBASE ):
617+ elif backend . getIdentifiedDbms () in (DBMS .MSSQL , DBMS .SYBASE ):
619618 forgeNotIn = True
620619
621620 if " ORDER BY " in limitedQuery :
@@ -629,7 +628,7 @@ def limitQuery(self, num, query, field=None):
629628 limitedQuery = limitedQuery .replace ("DISTINCT %s" % notDistinct , notDistinct )
630629
631630 if limitedQuery .startswith ("SELECT TOP " ) or limitedQuery .startswith ("TOP " ):
632- topNums = re .search (queries [getIdentifiedDBMS ()].limitregexp .query , limitedQuery , re .I )
631+ topNums = re .search (queries [backend . getIdentifiedDbms ()].limitregexp .query , limitedQuery , re .I )
633632
634633 if topNums :
635634 topNums = topNums .groups ()
@@ -675,8 +674,8 @@ def forgeCaseStatement(self, expression):
675674 @rtype: C{str}
676675 """
677676
678- if getIdentifiedDBMS () is not None and hasattr (queries [getIdentifiedDBMS ()], "case" ):
679- return queries [getIdentifiedDBMS ()].case .query % expression
677+ if backend . getIdentifiedDbms () is not None and hasattr (queries [backend . getIdentifiedDbms ()], "case" ):
678+ return queries [backend . getIdentifiedDbms ()].case .query % expression
680679 else :
681680 return expression
682681
0 commit comments