¿Cómo puedo explotar una inyección SQL basada en el tiempo sin usar comillas simples?

-4

Estoy haciendo algunas pruebas en una aplicación web y encontré una inyección SQL en un procedimiento almacenado. Es algo como esto:

Stored_procedure [input]

El procedimiento almacenado valida la entrada, debe ser un entero, pero puedo inyectar otra oración SQL como esta:

Stored_procedure 1;SELECT CURRENT_USER;

La aplicación web no me muestra el resultado de la segunda oración SQL, así que intenté ejecutar una inyección SQL basada en el tiempo:

Stored_procedure 1;WAITFOR DELAY '00:00:10';

No funcionó, porque la aplicación web escapa de las comillas, luego cambié mi Inyección de SQL:

Stored_procedure 1;WAITFOR DELAY (CHAR(48)+CHAR(48)+CHAR(58)+CHAR(48)+CHAR(48)+CHAR(58)+CHAR(49)+CHAR(48));

Esto tampoco funcionó, genera un error. ¿Podría ayudarnos a saber por qué no funciona o cómo puedo explotarlo?

    
pregunta hmrojas.p 16.09.2016 - 02:04
fuente

1 respuesta

2

Hay varias formas de superar el raspado de sus sentencias de SQL, especialmente si no es el raspado (o desinfección) de su entrada de forma recursiva. A veces, puedes adivinar la entrada mediante la encapsulación con otros personajes que sabes que se filtrarán, o en ocasiones simplemente colocando un wack frente a cada personaje restringido o filtrado. Para obtener más información sobre el tema, hay muchos ejemplos excelentes en el Manual de piratería de aplicaciones web, de Wiley Books, y lo recomiendo encarecidamente. Mejoré seriamente mi SQLi y otro juego de craqueo de aplicaciones web.

    
respondido por el dascho 16.09.2016 - 09:59
fuente

Lea otras preguntas en las etiquetas