diff --git a/lib/core/common.py b/lib/core/common.py index 9a42d9a99..8c55e4289 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -2549,7 +2549,7 @@ def normalizeUnicode(value): def safeSQLIdentificatorNaming(name, isTable=False): """ - Returns a safe representation of SQL identificator name + Returns a safe representation of SQL identificator name (internal data format) """ retVal = name diff --git a/plugins/dbms/maxdb/enumeration.py b/plugins/dbms/maxdb/enumeration.py index 4245f9e81..37aae2dc3 100644 --- a/plugins/dbms/maxdb/enumeration.py +++ b/plugins/dbms/maxdb/enumeration.py @@ -123,7 +123,7 @@ class Enumeration(GenericEnumeration): raise sqlmapNoneDataException, errMsg for tbl in tblList: - tblList[tblList.index(tbl)] = safeSQLIdentificatorNaming(tbl) + tblList[tblList.index(tbl)] = safeSQLIdentificatorNaming(tbl, True) rootQuery = queries[Backend.getIdentifiedDbms()].columns @@ -151,7 +151,7 @@ class Enumeration(GenericEnumeration): columns = {} for columnname, datatype, length in zip(retVal[0]["%s.columnname" % randStr], retVal[0]["%s.datatype" % randStr], retVal[0]["%s.len" % randStr]): - columns[columnname] = "%s(%s)" % (datatype, length) + columns[safeSQLIdentificatorNaming(columnname)] = "%s(%s)" % (datatype, length) table[tbl] = columns kb.data.cachedColumns[conf.db] = table diff --git a/plugins/dbms/sybase/enumeration.py b/plugins/dbms/sybase/enumeration.py index cbda89d9f..52344a48f 100644 --- a/plugins/dbms/sybase/enumeration.py +++ b/plugins/dbms/sybase/enumeration.py @@ -212,8 +212,8 @@ class Enumeration(GenericEnumeration): if colList: table = {} - table[unsafeSQLIdentificatorNaming(tbl)] = dict(map(lambda x: (x, None), colList)) - kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)] = table + table[safeSQLIdentificatorNaming(tbl)] = dict(map(lambda x: (x, None), colList)) + kb.data.cachedColumns[safeSQLIdentificatorNaming(conf.db)] = table continue infoMsg = "fetching columns " @@ -233,8 +233,8 @@ class Enumeration(GenericEnumeration): for name, type_ in zip(retVal[0]["%s.name" % randStr], retVal[0]["%s.usertype" % randStr]): columns[name] = sybaseTypes.get(type_, type_) - table[unsafeSQLIdentificatorNaming(tbl)] = columns - kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)] = table + table[safeSQLIdentificatorNaming(tbl)] = columns + kb.data.cachedColumns[safeSQLIdentificatorNaming(conf.db)] = table break diff --git a/plugins/generic/enumeration.py b/plugins/generic/enumeration.py index dbb6ded6b..8bda1d41d 100644 --- a/plugins/generic/enumeration.py +++ b/plugins/generic/enumeration.py @@ -1005,9 +1005,9 @@ class Enumeration: columns[colName] = colType if conf.db in kb.data.cachedColumns: - kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)][unsafeSQLIdentificatorNaming(tbl)] = columns + kb.data.cachedColumns[safeSQLIdentificatorNaming(conf.db)][safeSQLIdentificatorNaming(tbl, True)] = columns else: - kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)] = {unsafeSQLIdentificatorNaming(tbl): columns} + kb.data.cachedColumns[safeSQLIdentificatorNaming(conf.db)] = {safeSQLIdentificatorNaming(tbl, True): columns} return kb.data.cachedColumns @@ -1086,10 +1086,10 @@ class Enumeration: columns[name] = columnData[1] if conf.db in kb.data.cachedColumns: - kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)][unsafeSQLIdentificatorNaming(tbl)] = columns + kb.data.cachedColumns[safeSQLIdentificatorNaming(conf.db)][safeSQLIdentificatorNaming(tbl, True)] = columns else: - table[unsafeSQLIdentificatorNaming(tbl)] = columns - kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)] = table + table[safeSQLIdentificatorNaming(tbl, True)] = columns + kb.data.cachedColumns[safeSQLIdentificatorNaming(conf.db)] = table if not kb.data.cachedColumns and not conf.direct: for tbl in tblList: @@ -1208,10 +1208,10 @@ class Enumeration: if columns: if conf.db in kb.data.cachedColumns: - kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)][unsafeSQLIdentificatorNaming(tbl)] = columns + kb.data.cachedColumns[safeSQLIdentificatorNaming(conf.db)][safeSQLIdentificatorNaming(tbl, True)] = columns else: - table[unsafeSQLIdentificatorNaming(tbl)] = columns - kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)] = table + table[safeSQLIdentificatorNaming(tbl, True)] = columns + kb.data.cachedColumns[safeSQLIdentificatorNaming(conf.db)] = table if not kb.data.cachedColumns: errMsg = "unable to retrieve the columns for any " @@ -1261,13 +1261,13 @@ class Enumeration: count = inject.getValue(query, expected=EXPECTED.INT, charsetType=2) if count is not None and isinstance(count, basestring) and count.isdigit(): - if unsafeSQLIdentificatorNaming(db) not in kb.data.cachedCounts: - kb.data.cachedCounts[unsafeSQLIdentificatorNaming(db)] = {} + if safeSQLIdentificatorNaming(db) not in kb.data.cachedCounts: + kb.data.cachedCounts[safeSQLIdentificatorNaming(db)] = {} - if int(count) in kb.data.cachedCounts[unsafeSQLIdentificatorNaming(db)]: - kb.data.cachedCounts[unsafeSQLIdentificatorNaming(db)][int(count)].append(unsafeSQLIdentificatorNaming(table)) + if int(count) in kb.data.cachedCounts[safeSQLIdentificatorNaming(db)]: + kb.data.cachedCounts[safeSQLIdentificatorNaming(db)][int(count)].append(safeSQLIdentificatorNaming(table, True)) else: - kb.data.cachedCounts[unsafeSQLIdentificatorNaming(db)][int(count)] = [unsafeSQLIdentificatorNaming(table)] + kb.data.cachedCounts[safeSQLIdentificatorNaming(db)][int(count)] = [safeSQLIdentificatorNaming(table, True)] def getCount(self): if not conf.tbl: @@ -1481,10 +1481,10 @@ class Enumeration: self.getColumns(onlyColNames=True) try: - if not unsafeSQLIdentificatorNaming(conf.db) in kb.data.cachedColumns \ - or unsafeSQLIdentificatorNaming(tbl) not in \ - kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)] \ - or not kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)][unsafeSQLIdentificatorNaming(tbl)]: + if not safeSQLIdentificatorNaming(conf.db) in kb.data.cachedColumns \ + or safeSQLIdentificatorNaming(tbl, True) not in \ + kb.data.cachedColumns[safeSQLIdentificatorNaming(conf.db)] \ + or not kb.data.cachedColumns[safeSQLIdentificatorNaming(conf.db)][safeSQLIdentificatorNaming(tbl, True)]: warnMsg = "unable to enumerate the columns for table " warnMsg += "'%s' on database" % unsafeSQLIdentificatorNaming(tbl) warnMsg += " '%s', skipping" % unsafeSQLIdentificatorNaming(conf.db) @@ -1492,7 +1492,7 @@ class Enumeration: continue - colList = kb.data.cachedColumns[unsafeSQLIdentificatorNaming(conf.db)][unsafeSQLIdentificatorNaming(tbl)].keys() + colList = kb.data.cachedColumns[safeSQLIdentificatorNaming(conf.db)][safeSQLIdentificatorNaming(tbl, True)].keys() colString = ", ".join(column for column in colList) rootQuery = queries[Backend.getIdentifiedDbms()].dump_table @@ -1678,8 +1678,8 @@ class Enumeration: if len(kb.data.dumpedTable) > 0: kb.data.dumpedTable["__infos__"] = { "count": entriesCount, - "table": unsafeSQLIdentificatorNaming(tbl), - "db": unsafeSQLIdentificatorNaming(conf.db) } + "table": safeSQLIdentificatorNaming(tbl, True), + "db": safeSQLIdentificatorNaming(conf.db) } attackDumpedTable() conf.dumper.dbTableValues(kb.data.dumpedTable)