Tengo un parámetro (pi_apk_version_code) que parece ser vulnerable a la inyección de SQL (el equipo está dividido en esto). La columna de la base de datos correspondiente a este parámetro acepta solo valores numéricos. Ahora, si se da manualmente una carga útil "; o 1 = 1" como entrada para este parámetro, la salida es un código de error de Oracle (ORA-01722: número no válido). La misma entrada cuando se proporciona a través de un fuzzer no produce un código de error de Oracle, pero devuelve los resultados deseados de la consulta.
- ¿Es esto indicativo de que haya inyección SQL presente?
- Si cree que la inyección SQL está presente, ¿cuáles son algunas de las cargas útiles que suministrará para explotarla de modo que pueda estar convencido de que la inyección SQL está realmente presente?
[Editar]
SQLmap se ejecutó para esto y no se detectaron problemas.
[Editar]
Consultas de PL / SQL en foco (pi_apk_OS y pi_apk_version_code son entradas provenientes del cliente):
SELECT COUNT(1)
INTO l_count
FROM APK_VERSION_MASTER
WHERE apk_OS = pi_apk_OS
--AND apk_version_code = pi_apk_version_code
AND Status = 'A';
OPEN rc_result FOR
SELECT apk_version_code,
apk_version_string,
(CASE
--WHEN pi_apk_version_code < apk_version_code THEN
WHEN pi_apk_version_code < lowest_version_code THEN
'Y'
ELSE
'N'
END) AS is_Mandatory,
path,
upgrade_playstore,
l_error_code return_code,
l_error_message return_message
FROM APK_VERSION_MASTER
WHERE apk_OS = pi_apk_OS
AND apk_version_code = (SELECT MAX(apk_version_code)
FROM APK_VERSION_MASTER b
WHERE b.apk_OS = pi_apk_OS
AND Status = 'A');