Stai molto attento. Suppongo che tu abbia rimosso il drop table, alter table, create table e truncate table, giusto?
Fondamentalmente, con una buona SQL Injection, dovresti essere in grado di modificare tutto ciò che dipende dal database. Potrebbe trattarsi di autorizzazione, permessi, accesso a sistemi esterni, ...
Scrivi mai dati sul disco che sono stati recuperati dal database? In tal caso, potrebbero caricare un eseguibile come perl e un file perl e quindi eseguirli per ottenere un accesso migliore alla tua casella.
È inoltre possibile determinare quali sono i dati sfruttando una situazione in cui è previsto un valore di ritorno specifico. Cioè se l'SQL restituisce true, l'esecuzione continua, in caso contrario, l'esecuzione si interrompe. Quindi, puoi usare una ricerca binaria nel tuo SQL. selezionare count (*) dove user_password> 'H'; Se il conteggio è> 0 continua. Ora è possibile trovare la password esatta del testo in chiaro senza che sia necessario stamparla sullo schermo.
Inoltre, se l'applicazione non è indurita dagli errori SQL, potrebbe esserci un caso in cui è possibile iniettare un errore nell'SQL o nell'SQL del risultato e visualizzare il risultato sullo schermo durante il gestore degli errori. La prima istruzione SQL raccoglie una bella lista di nomi utente e password. La seconda istruzione cerca di sfruttarli in una condizione SQL per la quale non sono appropriati. Se l'istruzione SQL viene visualizzato in questa condizione di errore, ...
Jacob
grande cartone animato: http://stackoverflow.com/questions/84556/whats-your-favorite-programmer-cartoon/84629#84629 –
Ho modificato sopra . Come potrebbero effettivamente vedere gli utenti se non ho nulla che stampi quelle colonne? – johnny
Vedere la risposta di Jacob e leggere http://unixwiz.net/techtips/sql-injection.html – outis