Test di iniezione Oracle PL / SQL SQL da Unicode a Windows-1252

1

Ho un DB che utilizza la codifica dei caratteri di windows-1252 e SQL dinamico che esegue una semplice virgoletta con escape come questa ...

l_str := REPLACE(TRIM(someUserInput),'''','''''');

Poiché il DB è Windows-1252 quando il famigerato Unicode Character "MODIFIER LETTER APOSTROPHE" (U + 02BC) viene inviato viene convertito.

Esempio: l'app front-end lo invia ...

TESTʼEND

Ma finisce per cercare su questo ...

and someColumn like '%TESTʼEND%'

Quello che voglio sapere è che poiché ʼ è stato convertito in ʼ (che fortunatamente è sicuro produce solo risultati di ricerca errati) c'è qualche scenario in cui un non-windows-1252 caratteri può essere convertito in qualcosa che Rompere questo rendendo così possibile l'iniezione SQL?

Conosco le variabili di bind, so che anche il DB dovrebbe essere unicode, non è quello che sto chiedendo qui. Ho bisogno di prove che ciò che vedi qui sopra non è sicuro. Ho cercato per giorni e non riesco a trovare un modo per causare l'iniezione SQL quando si esegue un semplice escape di virgoletta semplice come questo quando il DB è Windows-1252. Grazie!

Oh, e sempre supponendo che la ricerca della colonna sia varchar , non number . Sono consapevole dei problemi e di come le cose cambiano quando si tratta di numeri. Supponiamo che questo sia sempre il caso:

l_str := REPLACE(TRIM(someUserInput),'''','''''');
...
... and someVarcharColumn like '%'||l_str||'%'
    
posta gfrobenius 30.03.2016 - 23:01
fonte

0 risposte

Leggi altre domande sui tag