En mysql, estoy familiarizado con el uso de las siguientes cargas útiles para probar blindsql cuando la cláusula WHERE es vulnerable ( todos los ejemplos de carga útil de fuzzdb ):
1 or sleep(TIME)#
" or sleep(TIME)#
' or sleep(TIME)#
En postgres, mi primer instinto fue probar lo siguiente:
1 or pg_sleep(TIME)--
" or pg_sleep(TIME)--
' or pg_sleep(TIME)--
Desafortunadamente, las cargas útiles de postgres no funcionan porque pg_sleep () devuelve VOID y, por lo tanto, no está permitido en una expresión booleana.
He intentado las siguientes soluciones:
- Enviar pg_sleep () a algún otro tipo de datos (no se permite la conversión de tipo void - > bool)
- He considerado intentar crear mi propia función pg_sleep (), pero esto no funciona en el entorno de caja negra en el que audito ...
ej:CREATE function pg_sleep(int) RETURNS int AS '/lib/libc.so.6', 'sleep' LANGUAGE 'C' STRICT
¿Alguna idea?
He intentado buscar en los documentos otras funciones que pueden usarse en lugar de pg_sleep () que no devuelven el vacío, pero no he tenido suerte.