Web5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisan

1. Potong kandungan pertanyaan

Sekiranya anda ingin mengabaikan skrip dalam pertanyaan. Sebagai contoh, untuk pemprosesan di bawah, pertanyaan memerlukan keadaan active=1 tetapi kita boleh mengulas (--, -- -, -+, #, /*, /**/, // , ;%00…) dan abaikan. Apabila melombong, kita sering tidak tahu apa yang dilakukan oleh baki kandungan pertanyaan, jadi menggunakan ulasan dalam kes ini adalah sangat berkesan.

Web5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisan

Selepas mengulas, pertanyaan kami menjadi:

Web5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisan

2. Pintasan penapisan kata kunci

a. Komen Sebaris

Komen sebaris digunakan dengan sangat berkesan untuk memintas penapisan ruang putih. Anda boleh menggunakan aksara berikut untuk memintas penapisan ruang putih: /**/, %20, %09, %0a, %0b, %0c, %0d, %a0). Sebagai contoh:

Web5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisan

Atau memintas penapisan kata kunci (tersedia dengan MySql). Dalam contoh di bawah, kata kunci kesatuan dan kata laluan berada dalam senarai hitam supaya kata kunci tersebut telah disekat. Kami boleh memintasnya dengan:

Web5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisan

b. Gantikan kata kunci

Apabila mengeksploitasi suntikan SQL, kami sering menggunakan kata kunci seperti: union, select, information_schema... Dalam banyak kes, pengaturcara hanya menggantikan kata kunci tersebut:

Web5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisan

Kita boleh melihat dengan mudah bahawa kod pemprosesan di atas adalah kurang. Jika ia hanya padanan corak, pintasan adalah sangat mudah. Mari kita gunakan sensitif huruf besar, di mana huruf besar dan huruf kecil ditafsirkan secara berbeza.

Sekarang daripada menggunakan kata kunci:

select, union…

Kami akan menggunakan:

SeLEcT, UniOn…

Asas pintasan ini ialah sistem pengurusan pangkalan data tidak membezakan antara kata kunci kes dan kes.

Dalam sesetengah kes, aplikasi web akan menapis semua atau sebahagian daripada kata kunci tertentu (kesatuan, pilih...). Kami akan memintas seperti berikut:

id=1+uniunionon+SeLselectecT+1,2,3-- -

Selepas kesatuan dan pilihan ditapis oleh aplikasi web, kami akan ditinggalkan dengan pertanyaan yang betul seperti berikut:

id=1+union+SeLecT+1,2,3-- -

c. Pengekodan aksara

Kami boleh memintas apabila WAF (Web Application Firewall) menyekat kata kunci dengan mengekodnya. Banyak aplikasi WAF hanya akan menyahkod pertanyaan sekali dan menapis kata kunci dalam senarai hitam, kemudian mari kita mengekod permintaan dua kali supaya ia boleh dipintas dalam kes ini.

Web5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisan

3. Pintasan menyekat petikan tunggal dan berganda

- Mari lihat contoh sebelum mempelajari secara khusus tentang pintasan ini.

Web5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisan

Dalam senario ini, kami mempunyai jadual dalam pangkalan data bernama pengguna. Tugas seterusnya ialah mengetahui nama lajur dalam jadual untuk mendapatkan maklumatnya. Seperti dalam pertanyaan di atas, kami menggunakan syarat: table_name='users'. Tetapi jika kedua-dua petikan tunggal (') dan petikan berganda (") disekat oleh WAF, kita tidak boleh lagi menggunakan 'pengguna' atau "pengguna". Jadi bagaimana untuk menyelesaikan masalah ini? Sistem pangkalan data terbina dalam memberikan kita fungsi yang menyelesaikan masalah ini dengan baik, iaitu fungsi CHAR( ) (untuk Oracle ialah CHR()). Contohnya, dalam pertanyaan di atas kita akan memintasnya dengan:

Web5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisanWeb5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisan

Pengaturcara PHP sangat biasa dengan fungsi addslashes(). Fungsi addslashes() mempunyai kesan menambah sebelum aksara khas seperti petikan tunggal ('), petikan berganda ("), garis miring ke belakang (\), NUL (bait nol) aksara "\" untuk membantu sistem pengurusan pangkalan data. Adakah terdapat tiada kesukaran dan kekeliruan semasa mengendalikan rentetan yang mengandungi aksara tersebut? Oleh itu, apabila kita ingin menyuntik ke dalam pertanyaan mengikut skrip: name='someName' atau '1'='1'-- Hasilnya tidak lagi seperti yang kita jangkakan.

Walau bagaimanapun, terdapat teknik untuk memintas fungsi addslashes() untuk menyuntik aksara petikan tunggal ('). Teknik ini telah lama diketahui umum, dan melaksanakan teknik ini agak sukar kerana ia terikat dengan gaya pengekodan yang digunakan pada laman web.

4. Pintas ralat "campuran haram pengumpulan untuk operasi UNION"

Dalam sesetengah sistem pengurusan (biasanya ditemui dalam MySql), apabila pangkalan data dan jadual telah ditetapkan kepada penyusunan, apabila menggunakan kata kunci UNION, ralat "campuran tidak sah pengumpulan untuk operasi UNION" akan dilaporkan. Menetapkan pengumpulan boleh disebabkan oleh niat pereka pangkalan data atau disebabkan oleh tetapan lalai MySql. Dalam kes menggunakan kesatuan, kami mesti memastikan bahawa syarat nilai pilih dalam setiap medan mesti mempunyai jenis kod yang sepadan ditakrifkan. Pada pendapat saya, ralat ini agak biasa, terutamanya untuk CMS yang menjalankan Apache MySql. Orang ramai boleh mengetahui lebih lanjut di: http://bugs.mysql.com/bug.php?id=57926.
Dalam kes ini, kita boleh menggunakan cara untuk menukar kepada jenis pengekodan yang sesuai.

Contohnya dalam kes berikut:

Web5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisan

Dalam pertanyaan di atas, jika lajur1 mempunyai susunan yang ditetapkan kepada Unicode-UTF8 atau _latin1, sebagai contoh, maka perkara yang dipilih daripada lajur2 perlu ditukar kepada kod yang sepadan. Kita boleh memaksa gaya seperti berikut:

Web5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisan

Kami melihat kelemahan dalam kaedah pintasan ini: kita perlu tahu bahawa kod yang disusun ialah _latin1. Cara yang lebih baik untuk memintasnya, pada pendapat saya, adalah menggunakan fungsi pengekodan dan penyahkodan hex dan unhex.

Web5: Suntikan SQL - Beberapa teknik untuk memintas mekanisme penapisan

Terdapat banyak fungsi lain yang boleh digunakan sebagai ganti hex dan unhex.

Tinggalkan Komen

Bagaimana untuk mengalih keluar notis permintaan hak cipta di sudut kanan skrin pada Windows 10

Bagaimana untuk mengalih keluar notis permintaan hak cipta di sudut kanan skrin pada Windows 10

Adakah anda melihat pemberitahuan pengaktifan Windows 10 di sudut kanan skrin? Artikel ini akan membimbing anda cara memadamkan notis permintaan hak cipta pada Windows 10.

Arahan daripada AZ tentang cara memasang Windows 10 build 14393.222

Arahan daripada AZ tentang cara memasang Windows 10 build 14393.222

Baru-baru ini Microsoft mengeluarkan kemas kini kumulatif terkini untuk pengguna PC Windows 10 yang dipanggil Build 14393.222. Kemas kini yang dikeluarkan untuk Windows 10 ini terutamanya membetulkan pepijat berdasarkan maklum balas pengguna dan meningkatkan pengalaman prestasi sistem pengendalian.

Lindungi rangkaian komputer anda dengan hos Bastion hanya dalam 3 langkah

Lindungi rangkaian komputer anda dengan hos Bastion hanya dalam 3 langkah

Adakah anda mempunyai komputer pada rangkaian tempatan anda yang memerlukan akses luaran? Menggunakan hos benteng sebagai penjaga pintu untuk rangkaian anda boleh menjadi penyelesaian yang baik.

3 cara untuk mengosongkan semua log peristiwa dalam Windows 10 dengan cepat

3 cara untuk mengosongkan semua log peristiwa dalam Windows 10 dengan cepat

Kadangkala anda mungkin perlu memadamkan log peristiwa lama sekaligus. Dalam panduan ini, Quantrimang.com akan menunjukkan kepada anda 3 cara untuk memadam semua log peristiwa dalam Windows 10 Event Viewer dengan cepat.

Cara membuat kunci Windows jika papan kekunci anda tidak tersedia

Cara membuat kunci Windows jika papan kekunci anda tidak tersedia

Jika anda lebih suka menggunakan papan kekunci klasik lama, seperti IBM Model M, yang tidak termasuk kekunci Windows fizikal, terdapat kaedah mudah untuk menambah lagi, dengan meminjam kunci yang anda jarang gunakan. .

Cara membuat mod latar belakang telus pada Windows 10

Cara membuat mod latar belakang telus pada Windows 10

WindowTop ialah alat yang mempunyai keupayaan untuk meredupkan semua tetingkap aplikasi dan program yang dijalankan pada komputer Windows 10. Atau anda boleh menggunakan antara muka latar belakang gelap pada tingkap.

Kaedah IP palsu membantu anda mengakses tanpa nama

Kaedah IP palsu membantu anda mengakses tanpa nama

Dalam banyak artikel sebelumnya, kami telah menyebut bahawa kekal tanpa nama dalam talian adalah sangat penting. Maklumat peribadi dibocorkan setiap tahun, menjadikan keselamatan dalam talian semakin diperlukan. Itulah juga sebab kita harus menggunakan alamat IP maya. Di bawah, kita akan belajar tentang kaedah untuk mencipta IP palsu!

Bagaimana untuk mematikan bar Bahasa pada Bar Tugas Windows 8

Bagaimana untuk mematikan bar Bahasa pada Bar Tugas Windows 8

Bar Bahasa pada Windows 8 ialah bar alat bahasa kecil yang direka untuk dipaparkan secara automatik pada skrin Desktop. Walau bagaimanapun, ramai orang ingin menyembunyikan bar bahasa ini pada Bar Tugas.

Petua untuk mengoptimumkan kelajuan sambungan Internet daripada Linksys

Petua untuk mengoptimumkan kelajuan sambungan Internet daripada Linksys

Memaksimumkan kelajuan Internet adalah penting untuk mengoptimumkan sambungan rangkaian anda. Anda boleh menikmati hiburan dan pengalaman kerja yang optimum menggunakan komputer, TV sedia Internet, konsol permainan, dsb.

Bagaimana untuk menyediakan WEP, WPA, WPA2 untuk penghala Linksys

Bagaimana untuk menyediakan WEP, WPA, WPA2 untuk penghala Linksys

Kesambungan wayarles adalah satu keperluan hari ini dan kerana itu, keselamatan wayarles adalah penting untuk memastikan keselamatan dalam rangkaian dalaman anda.