Istruttore: ora per provare a scoprire iniezioni di SQL,
è necessario sfogliare il target e
provare a interrompere ogni pagina.
Quindi ogni volta che vedi una casella
di testo o un parametro in questo
modulo, ad esempio, pagina. php quindi qualcosa di uguale a qualcosa,
prova a iniettare roba qui.
Quindi prova a utilizzare una
singola citazione, prova a utilizzare un'istruzione e, o ordina per,
per spezzare la pagina e farla apparire diversa.
Quindi, ti mostrerò qui un esempio.
E vado prima alla pagina di accesso, proprio qui.
E mi sta chiedendo di accedere ora.
Ma in realtà mi sono registrato con il mio nome.
Quindi puoi semplicemente entrare qui e registrarti.
Ho un nome utente chiamato
Zaid e una password con uno due tre quattro cinque sei.
Quindi, prima, facciamo solo ...
Accederò solo per mostrarti, quindi.
Il mio nome utente
è Zaid e la mia password è uno due tre quattro cinque sei.
E ora ho effettuato l'accesso come
Zaid e la mia firma era aa.
Non è proprio niente, proprio come un test.
Quindi esco e
torniamo alla pagina di accesso.
Proprio qui, abbiamo la pagina in modo che
tu possa provare a iniettarci.
Ma ci occuperemo più tardi, quindi.
Al momento,
abbiamo un esempio di iniezione nelle caselle di testo.
Quindi puoi provare a iniettare nel nome
e nella password.
Quindi inserirò il mio nome come Zaid
e inserirò una sola citazione.
Quindi inserisco questo segno nella mia password.
Quindi vediamo se possiamo romperlo.
E come puoi vedere ora,
c'è un errore che ci viene mostrato.
E non sembra un normale errore,
sembra che sia un errore del database.
E di solito sarai molto fortunato se ricevi
un errore del genere.
Ora di solito l'errore non sarà così informativo.
A volte vedrai che la
pagina non si comporta come previsto,
come previsto.
A volte sarà solo una
pagina che non sembra come dovrebbe.
Ad esempio, se è
una pagina di notizie, forse mancherà l'articolo o
se è un blog, avrà uno dei post mancanti
o diversi tipi di post.
Quindi devi tenere d'occhio cosa sta cambiando.
In questo esempio, stiamo effettivamente riscontrando un errore davvero gradevole.
Ci sta dicendo quale file
ha e ci sta dicendo che c'è un errore nell'istruzione.
E l'errore vicino alle virgolette che abbiamo aggiunto.
E ci dice anche l'affermazione che viene eseguita.
Questo è davvero buono per l'apprendimento.
Perché ora possiamo vedere qual è
l'affermazione che il sistema sta cercando di eseguire.
E i sistemi che provano a selezionare *.
Quindi sta cercando di selezionare tutto dagli account, in cui
il nome utente è uguale a
Zaid e la password è uguale a una singola citazione.
E nota che il sistema l'applicazione
web sta già aggiungendo virgolette
attorno al nome.
Quindi quando ho detto Zaid, ha aggiunto Zaid tra due virgolette.
E ha aggiunto la
singola citazione che ho aggiunto tra altre due citazioni.
Ecco perché abbiamo tre citazioni proprio qui.
Quindi da questo possiamo,
è come il 70% del sito Web di destinazione,
ha un'iniezione SQL.
Non siamo ancora
sicuri se può eseguire ciò che vogliamo che faccia.
Quindi posso effettivamente
iniettare codice e farlo eseguire?
Vediamo se riusciamo a farlo.
Quindi il nome utente sarà di nuovo Zaid.
E cosa farò
con la password, inserirò la mia password.
Quindi ne metterò uno due tre quattro cinque sei
e poi lo chiuderò.
Quindi ti dirò perché lo
sto chiudendo, perché la dichiarazione corrente attraverso
il sistema è select
* da, a Zaid e, è
uguale a.
E aprirà una sola citazione da solo.
Quindi chiamiamo questa password S.
Quindi stiamo trattando questa come una variabile.
E prende tutto quello che ho messo qui, qualunque
cosa vado a mettere in questa scatola.
E lo inserirà invece della password S, che
è una variabile.
Quindi ti sto solo dando un'idea,
quindi devi essere in grado di immaginare che questo accada.
Quindi sta prendendo tutto quello che ho messo lì, e
lo metterà tra due virgolette singole.
E verrà inserito lì ed
eseguito sul sistema.
Quindi quello che
sto facendo è che ne metterò uno due tre
quattro cinque sei e aggiungerò io stesso il preventivo.
Quindi, cosa farò adesso, il
codice sarà così.
Quindi selezionerà questo e la password
è uguale a quella.
E ho due citazioni in questo momento, ok.
E poi quello che
farò è,
lo dirò e, uno è uguale a uno.
Quindi uno è uguale a uno.
E sto solo cercando
di vedere se eseguirà ciò che voglio che faccia.
Quindi la mia dichiarazione in questo momento è, sarà
Seleziona * dagli account, dove il nome utente
è uguale a Zaid e la
password è uguale a uno due tre quattro cinque sei.
E nota, lo inserirò io stesso e
quelli uguali a uno.
Un problema di cui il sistema si
lamenterà è che qui abbiamo
un preventivo aggiuntivo, perché lo inserirò io stesso nella casella di testo.
Quindi si lamenterà di
questo, dirà che questo è un codice aperto
e che non è mai stato chiuso.
Quindi quello che farò è che aggiungerò il commento.
E quando aggiungi un commento,
praticamente tutto ciò che arriva dopo il commento
non verrà eseguito.
Userò l'hash come commento.
Quindi, qualsiasi cosa accada dopo
l'hash, il sistema ignorerà.
Quindi sto per iniettare ora sarà questo, e uno
uguale a uno e questo, quindi, come ho detto, di
solito quello che hai qui, hai tagliato
la tua password, o a seconda
di come viene chiamato il programma,
solo per immaginare Questo.
E lo inserirò all'interno.
Quindi quando lo fai e lo inserisci all'interno, ecco
come apparirà il codice.
Quindi sembrerà il nome utente giusto, la
password giusta
e uno è uguale a uno, il che è vero.
E poi
non lo farà, ignorerà questa citazione proprio qui.
Quindi, se lo
incolliamo, dovremmo essere in grado di accedere.
Dovrebbe permettermi di accedere.
E perfetto siamo stati in grado di accedere e il nome utente è Zaid.
Finora non abbiamo fatto nulla.
Ma questo tipo di ci mostra che sta eseguendo il nostro codice?
Proviamo una cosa diversa.
Ora proviamo ad aggiungere una dichiarazione falsa.
Quindi abbiamo fatto uno uguale,
ed era corretto ed eseguito quando volevamo.
Proviamo uno uguale a due.
E questo è falso.
Quindi ho la password giusta.
E ho il nome utente
giusto e uno è uguale a due.
E questo dovrebbe essere sbagliato perché è falso
uno non è uguale a
due e sto usando un e quindi tutto deve essere vero.
Quindi dovrebbe darmi
un errore anche se inserirò il nome utente corretto
e inserirò la password corretta.
Quindi ne metto uno due tre quattro cinque sei
e uno è uguale a due.
Quindi sarà come, oh, questo è sbagliato.
E come puoi vedere mi ha dato un errore
di autenticazione, nome utente o
password errati, anche se mi è stata data la password
giusta e il nome utente giusto.
Quindi questo conferma che questo sito web sta effettivamente iniettando
tutto ciò che vogliamo nella password.
Quindi possiamo usare il campo password per iniettare il codice SQL.
E sarà sempre su questo modulo.
Quindi inseriremo una password
e inserirai il tuo codice qui,
quindi lo inserirò qui nel codice maiuscolo.
Perché inseriremo una password, chiuderemo il preventivo e
quindi inseriremo il codice che vogliamo
eseguire sul sistema
proprio qui, e verrà eseguito sul sistema di destinazione.