diff --git a/plugins/dbms/sqlite/enumeration.py b/plugins/dbms/sqlite/enumeration.py index 0daf4c6a1..6b79d4b71 100644 --- a/plugins/dbms/sqlite/enumeration.py +++ b/plugins/dbms/sqlite/enumeration.py @@ -68,16 +68,6 @@ class Enumeration(GenericEnumeration): return [] - def getColumns(self, onlyColNames=False): - errMsg = "on SQLite it is not possible to enumerate database " - errMsg += "table columns" - - if conf.dumpTable or conf.dumpAll: - errMsg += ", provide them with -C option" - raise sqlmapUnsupportedFeatureException, errMsg - - logger.warn(errMsg) - def dumpAll(self): errMsg = "on SQLite you must specify the table and columns to dump" raise sqlmapUnsupportedFeatureException, errMsg diff --git a/plugins/generic/enumeration.py b/plugins/generic/enumeration.py index 136e46041..1c385042c 100644 --- a/plugins/generic/enumeration.py +++ b/plugins/generic/enumeration.py @@ -871,15 +871,21 @@ class Enumeration: conf.db, conf.db, conf.db, conf.tbl) query += condQuery.replace("[DB]", conf.db) + elif kb.dbms == "SQLite": + query = rootQuery["inband"]["query"] % conf.tbl value = inject.getValue(query, blind=False) if value: table = {} columns = {} - - for column, colType in value: - columns[column] = colType + + if kb.dbms == "SQLite": + for match in re.finditer(r"(\w+) ([A-Z]+)[,\r\n]", value): + columns[match.group(1)] = match.group(2) + else: + for column, colType in value: + columns[column] = colType table[conf.tbl] = columns kb.data.cachedColumns[conf.db] = table diff --git a/xml/queries.xml b/xml/queries.xml index a933d011e..9a5015bed 100644 --- a/xml/queries.xml +++ b/xml/queries.xml @@ -320,7 +320,9 @@ - + + +