Come funziona questa unica iniezione SQL?

1

Ho trovato una sfida che era vulnerabile all'iniezione SQL ed è stato molto molto difficile da trovare Quindi, come funziona questo SQL univoco?

L'ho trovato sul modulo di login in cui quando invio user=\&pass=||1# come payload ho ottenuto correttamente l'accesso al pannello di amministrazione.

Questa è stata la sfida. link

    
posta Utkarsh Agrawal 29.08.2018 - 05:55
fonte

1 risposta

4

La query in questione probabilmente è simile a questa:

SELECT * FROM users WHERE user = '$user' AND pass = '$pass'

Le variabili $user e $pass sono probabilmente sterilizzate rimuovendo o sfuggendo " e / o ' . Ecco perché un attacco standard di ' or '1'='1 o simili non funziona.

Con l'iniezione, otterrai la seguente query:

SELECT * FROM users WHERE user = '\' AND pass = '||1#'

Poiché stai sfidando il ' dalla query, user viene ora confrontato con ' and pass = (che probabilmente valuterà a false , poiché non esiste un utente di questo tipo). # è un commento che taglia il resto della query, quindi ||1#' valuta OR true , che sarà vero. Il codice di autenticazione ora probabilmente preleverà il primo risultato di quella query, o controllerà se qualcosa è stato restituito, e quindi ti autenticherà.

    
risposta data 29.08.2018 - 14:50
fonte

Leggi altre domande sui tag