perché il database mostra una colonna vulnerabile quando fornisco un parametro errato nella query?

-1

Quando proviamo a iniettare un sito Web per trovare la colonna vulnerabile, a volte dobbiamo fornire un valore errato nel parametro del sito web. Come

www.vhul-web.com/index.php?id=1 union select 1,2,3 -- -

Ora la colonna vulnerabile non viene visualizzata.

www.vhul-web.com/index.php?id=-1 union select 1,2,3 -- -

o

www.vhul-web.com/index.php?id=.1 union select 1,2,3 -- -

o

www.vhul-web.com/index.php?id=1 having 0 union select 1,2,3 -- -

o

www.vhul-web.com/index.php?id=1 div 0 union select 1,2,3 -- -

Quindi mostrano le colonne vulnerabili. Perché mostra dopo falso il parametro? Qual è la logica back-end su questo?

    
posta MD Sijad Faisal 04.02.2016 - 08:28
fonte

1 risposta

0

Non sono sicuro di capire cosa stai chiamando colonna vulnerabile. Ma proverò a rispondere alla tua domanda.

Prima di tutto, per individuare tale iniezione SQL, il modo più semplice è quello di iniettare operazioni matematiche, ad esempio:

www.vhul-web.com/index.php?id=1

Visualizza il risultato 1

www.vhul-web.com/index.php?id=2

Visualizza il risultato 2

www.vhul-web.com/index.php?id=2-1

Visualizza il risultato 1

In questo caso, possiamo dedurre che l'operazione matematica è stata probabilmente valutata, questo significa che l'applicazione rischia di essere vulnerabile.

Secondo passo è necessario determinare il numero di colonne selezionate nella query originale. Lo faccio utilizzando ORDER BY con valori diversi:

www.vhul-web.com/index.php?id=1 ORDER BY 4--

Non possiamo vedere nulla nel caso peggiore o una pagina di errore nel migliore dei casi, questo significa che ci sono meno di 4 colonne

www.vhul-web.com/index.php?id=1 ORDER BY 3--

Se possiamo vedere il risultato atteso (gli stessi dati che senza l'istruzione iniettata ORDER BY 3), significa che ci sono almeno 3 colonne. Significa esattamente 3 in questo esempio perché abbiamo anche meno di 4 colonne.

Ora vuoi visualizzare i risultati dell'iniezione UNION . Il motivo principale per cui è necessario inserire un id non esistente nella query è che in tali query lo sviluppatore spesso si aspetta solo un risultato dalla query SQL. Infatti, id , è spesso associato alla tabella Chiave primaria.

Quando si inserisce una query UNION , si aggiunge una seconda riga ai risultati non previsti, quindi è probabile che venga ignorata dallo script back-end, quindi non visualizzata.

Eseguendo una query su id non valido con un'istruzione UNION , lo script dovrebbe avere solo 1 risultato dal DB, risultante dalla query UNION .

    
risposta data 04.02.2016 - 14:29
fonte

Leggi altre domande sui tag