Ho un parametro (pi_apk_version_code) che sembra essere vulnerabile a SQL Injection (la squadra è divisa su questo). La colonna del database corrispondente a questo parametro accetta solo valori numerici. Ora, se un payload "; o 1 = 1" viene dato manualmente come input per questo parametro, l'output è un codice di errore Oracle (ORA-01722: numero non valido). Lo stesso input fornito con un fuzzer non genera un codice di errore Oracle, ma restituisce i risultati desiderati dalla query.
- Questo indicativo di SQL injection è presente?
- Se pensi che SQL injection sia presente, quali sono i payload che fornirai per sfruttarlo in modo tale da convincerti che l'injection SQL sia realmente presente?
[Modifica]
SQLmap è stato eseguito per questo e non sono stati rilevati problemi.
[Modifica]
Domande PL / SQL messe a fuoco (pi_apk_OS e pi_apk_version_code sono input provenienti dal client):
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');