1919from lib .core .common import getUnicode
2020from lib .core .common import isNumPosStrValue
2121from lib .core .common import parsePasswordHash
22+ from lib .core .common import parseSqliteTableSchema
2223from lib .core .common import popValue
2324from lib .core .common import pushValue
2425from lib .core .common import randomStr
@@ -949,16 +950,14 @@ def getColumns(self, onlyColNames=False):
949950
950951 value = inject .getValue (query , blind = False , error = False )
951952
952- if value :
953+ if kb .dbms == DBMS .SQLITE :
954+ parseSqliteTableSchema (value )
955+ elif value :
953956 table = {}
954957 columns = {}
955958
956- if kb .dbms == DBMS .SQLITE :
957- for match in re .finditer (getCompiledRegex (r"(\w+) ([A-Z]+)[,\r\n]" ), value ):
958- columns [match .group (1 )] = match .group (2 )
959- else :
960- for column , colType in value :
961- columns [column ] = colType
959+ for column , colType in value :
960+ columns [column ] = colType
962961
963962 table [conf .tbl ] = columns
964963 kb .data .cachedColumns [conf .db ] = table
@@ -981,6 +980,13 @@ def getColumns(self, onlyColNames=False):
981980 elif kb .dbms == DBMS .FIREBIRD :
982981 query = rootQuery .blind .count % (conf .tbl )
983982 query += condQuery
983+ elif kb .dbms == DBMS .SQLITE :
984+ query = rootQuery .blind .query % conf .tbl
985+ value = inject .getValue (query , inband = False )
986+
987+ parseSqliteTableSchema (value )
988+
989+ return kb .data .cachedColumns
984990
985991 count = inject .getValue (query , inband = False , expected = EXPECTED .INT , charsetType = 2 )
986992
0 commit comments