Union Attack

Author: Anonputraid

Retrieving data from other database tables

Jika Aplikasi Menjalankan Kueri Berikut Yang Berisi Input Pengguna "Gift":

 SELECT name, description FROM products WHERE category = 'Gifts' 

Maka Penyerang Dapat Mengirimkan Input:

 ' UNION SELECT username, password FROM users-- 

Query Ini Akan Menyebabkan Aplikasi Mengembalikan Semua Nama Pengguna Dan Kata Sandi Bersama Dengan Nama Dan Deskripsi Produk.

Inilah Definisi Sederhana Tentang Penggunaan Union Sebagai Serangan Mengambil Data Dari Table Database Lain.

Dengan Menggunakan Union Kita Juga Bisa Menggunakan Satu Atau Lebih Query SQL Select.

Sebagai Contoh:

 SELECT a, b FROM table1 UNION SELECT c, d FROM table2 

Union Query Tersebut Akan Menghasil Kan Satu Set Hasil Dengan Dua Colomn Dari Table1/Table2

Tips And Trick Union:

Dalam Penggunaan Union Ada Beberapa Syarat Agar Query Berhasil:

  • Query Utama Harus Mengembalikan Colomn Yang Sama.

  • Tipe Data Disetiap Colomn Harus Kompetible Antara Query Individual

Untuk Memastikan Apakah Aplikasi Bisa Di Serang Menggunakan Teknik Union, Ada Beberapa Pertanyaan Yang Harus Anda Pecahkan:

  • Berapa Banyak Colomn Yang Dimiliki Table Utama ?

  • Colomn Mana Yang Mengembalikan Hasil Query Yang Disuntikan ?

Berikut Kita Akan Memecahkan Pertanyaan Tersebut:

Cara Memecahkan Berapa Jumlah Colom Table Utama ?

Saat Melakukan Serangan Union Injeksi SQL, Ada Dua Metode Efektif Untuk Menentukan Berapa Banyak Colomn Yang Dikembalikan Dari Query Utama.

The SQL Order By Keyword

Metode 1 Adalah Menggunakan Perintah Query Order By . Perintah Query Order By Pada Dasar Nya Digunakan Untuk Mengurutkan Hasil-set Dalam Menaik Atau Urutan Menurun. Nah Dengan Begitu Order By Juga Bisa Dimanfaat Kan Untuk Memeriksa Ada Berapa Banyak Colomn Pada Hasil Query Yang Dikembalikan.

Sebagai Contoh, Ketika Anda Mengirim :

SELECT * FROM Table1
ORDER BY 3;

Query Tersebut Jika Dibaca, Urutkan Hasil Query Table1 Dari Column 3 Pada Table1. Jika Table1 Hanya Memiliki 2 Column, Sedangkan Hasil-set Diurut Pada Angka 3. Maka Server Akan Mengembalikan Pesan Error. Dikarnakan Column Pada Table1 Hanya Memiliki 2 Column. Pesan Kesalahan Bisa Seperti Berikut:

Dengan Penjelasan Ini, Semoga Teman Teman Paham, Aplikasi Mungkin Benar-benar Mengembalikan Pesan Kesalahan Basis Data Dalam Respons Http-nya, Atau Mungkin Mengembalikan Kesalahan Umum, Atau Bisa Jadi Tidak Mengembalikan Hasil Apa Pun.

Inti Dalam Menggunakan Teknik Serangan Union, Ada Harus Dapat Mendeteksi Berapa Banyak Column Yang Dimiliki Oleh Table Pada Database Target, Jika Anda Berhasil, Anda Akan Mendapatkan Kerentanan Tersebut.

Union Select Null Values

Metode 2 Anda Bisa Menggunakan Nilai Null. Apa Itu Null ? Sederhana Nya Bidang Dengan nilai NULL Adalah Bidang Tanpa Nilai. Namun Nilai Null Berbeda Dari Nilai Nol Atau Bidang Yang Berisi Spasi. Bidang Dengan Nilai Null Adalah Bidang Yang Dibiarkan Kosong Selama Pembuatan Rekaman!

Dengan Begitu Kita Bisa Menebak Ada Berapa Column Pada Table Utama Target:

 ' UNION SELECT NULL,NULL,NULL--

Seperti Biasa, Jika Jumlah Null Melebihi Dari Jumlah Colomn Yang Dimiliki Table, Maka Server Akan Mengembalikan Pesan Kesalahan.

Bagaimana Cara Menemukan Hasil Query Yang Disuntikan ?

Sebelumnya Admin Belum Menjelaskan Kenapa Sih Kita Menggunakan Union ? Jawaban Nya Adalah Agar Kita Mendapatkan Langsung Data Hasil Dari Query Yang Disuntikan. Maksud Nya ?

Oke,Disini Admin Akan Menjelaskan Secara Rinci, Setelah Kita Menemukan Jumlah Colum Pada Table Target. Hal Yang Kita Tunggu Adalah Memeriksa Data Pada Setiap Column Didalam Table Tersebut ? Seperti Hal Nya Table Users. Memiliki Column Username, Dan Password. Nah Data Seperti Inilah Yang Admin Cari BosQ.

Nah, Untuk Memeriksa Column Mana Yang Bisa Digunakan Untuk Menampung String Data, Yang Akan Kita Keluarkan. Adalah Dengan Cara Mengirim Query Seperti Berikut:

' UNION SELECT 'a',NULL,NULL,NULL--
' UNION SELECT NULL,'a',NULL,NULL--
' UNION SELECT NULL,NULL,'a',NULL--
' UNION SELECT NULL,NULL,NULL,'a'--

Oke, Admin Akan Jelasin Satu2, Coba Anda Masukan String 'a', Pada Setiap NULL Seperti Contoh Diatas, Secara Bergantian !. Dan Coba Anda Lihat, Bagian Column Mana Yang Tidak Menampilkan Pesan Keselahan. Jika Semisalnya Pada Bagian Colom 3.

' UNION SELECT NULL,NULL,'a',NULL--

Tidak Menampilkan Pesan Error Ketika Query Dikirim Kedalam Server, Maka Bisa Dipastikan Bahwa Column 3 Bisa Menampung Data String. Pesan Kesalahan Bisa Berupa Berikut:

SQL-Injection: UNION attack Interesting Data:

Setelah Semua Pertanyaan Sudah Kita Pecahkan, Dan Akhir Nya Kita Masuk Kepembahasan Cara Mengambil Data Pada Table Target. Haha

Seperti Yang Sudah Admin Jelaskan Sebelum nya Ada Syarat Untuk Mengambil Data Pada Table Target Yaitu:

  • Anda Mengetahui Berapa Jumlah Colum Pada Table

  • Anda Menemukan Column Yang Bisa Menampung Data String !

Nah Jika Syarat Tersebut Sudah Terpenuhi Barulah Kita Mengambil Data Didalam Table Tersebut Menggunakan Perintah Query SQL. Berikut Ini Adalah Contoh Mengambil Data Ditable Lain Kita Anggap Saja Table Users Yang Berisikan Password Dan Username.

SELECT a, b FROM administrator

Anggap Saja Sekarang Kita Berada Didalam Table Administrator. Kita Bisa Menggunakan UNION untuk Mengambil Table Lain Secara Bersamaan Dengan Table Utama.

SELECT a, b FROM administrator UNION SELECT username,password from users --

Dengan Begitu Server Akan Menampilkan Isi Colom Dari Username Dan Password, Beserta Isi colomn Dari Table Administator.

Retrieving multiple values within a single column

Anda Juga Bisa Mengambil Banyak Data Menggunakan Satu Colom, Anggap Saja, Table Tersebut Memiliki 2 Colom, Setelah Kita Melakukan Pengujian, Ternyata Salah Satu Colom Bisa Menampung Data String, Dengan Begitu, Kita Bisa Memasukan Perintah Berikut.

 ' UNION SELECT username || '~' || password FROM users-- 

Maka Server Akan Mengembalikan Nilai Seperti Berikut:

administrator~s3cure
wiener~peter
carlos~montoya

Last updated

Was this helpful?