Al momento sto facendo un attacco SQL Injection contro un sito Web a scuola (che la tecnologia ha creato) purtroppo non posso indirizzare nessuno al sito in questione, l'insegnante ci ha permesso di acquisire le conoscenze necessarie. Ho il permesso di testare questo sito prima che la gente chieda perché voglio conoscere la risposta . Ho trovato quello che penso sia un campo uname iniettabile per creare un nuovo utente sul sito web, tuttavia ogni volta che provo e uso query multilinea la query non riesce ad eseguire. Prima di eseguire una query INSERT sembra che una query SELECT viene eseguita per controllare se l'uname esiste già nel sistema.
Suppongo che il campo del nome utente sia sfruttabile come se creo un nuovo utente con una singola citazione nel loro cognome:
uname: o'connor
Ottengo il seguente errore SQL dettagliato:
OH DEAR - unable execute SQL query: SELECT * FROM usertable WHERE uname='o'connor'
Tuttavia, se provo a usare un punto e virgola ed eseguo un'istruzione multilinea, non riesce ad eseguire, ad esempio:
uname: admin'; UPDATE usertable SET password='pass' WHERE uname='admin';
Si è verificato un errore:
OH DEAR - unable execute SQL query: SELECT * FROM usertable WHERE uname='admin'; UPDATE usertable SET password='pass' WHERE uname='admin'; '
lo script PHP che elabora i dati POST sembra aggiungere una sola citazione alla fine, ma la mia comprensione era che la mia query iniettata sarebbe stata eseguita prima di raggiungere questa citazione singola. Sto eseguendo correttamente le interrogazioni multilinea?
** AGGIORNAMENTO Ho anche provato:
uname: admin'; UPDATE usertable SET password='pass' WHERE uname='admin'; --
inutilmente lo stesso problema che non è in grado di eseguire e so che tutti questi nomi di colonne e nomi di tabelle sono corretti. Esiste comunque la possibilità di inviare la query originale a un file di testo o qualcosa di simile o quando i risultati vengono restituiti modificare il valore di qualcosa che viene visualizzato nella pagina nelle password?