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à.