Artikel ini membawa anda pengetahuan yang berkaitan tentang SQL, yang terutamanya memperkenalkan isu berkaitan suntikan buta memotong hasil data yang ditanya dalam pangkalan data kepada aksara tunggal, dan kemudian Mari kita lihat perkara yang sama. pembinaan pernyataan logik saya harap ia akan membantu semua orang.
Disyorkan kajian: "Tutorial SQL"
Suntikan gema digunakan terutamanya untuk memaparkan data dalam pangkalan data terus pada halaman laman web.
Suntikan ralat digunakan terutamanya apabila maklumat ralat asal wujud pada halaman tapak web, dan data dalam pangkalan data dipaparkan dalam maklumat ralat asal. Juga dikenali sebagai gema ralat.
Prinsip: Memandangkan pengguna mempunyai input yang tidak boleh dikawal, penyerang boleh memasukkan pernyataan SQL yang berniat jahat dengan sewenang-wenangnya, menyebabkan semantik SQL berubah, seterusnya menyebabkan risiko kepada pangkalan data dan sistem pengendalian.
Risiko: manipulasi data, pintasan log masuk, manipulasi fail, pelaksanaan arahan, manipulasi pendaftaran.
Pertahanan: penapisan, pra-penyusunan.
1 Data dalam pangkalan data tidak akan dipaparkan secara langsung pada halaman muka surat . Contohnya, kotak log masuk
2. Sintaks sisipan, kemas kini, padam, dsb. tidak mempunyai fungsi pertanyaan data dan data dalam pangkalan data tidak akan wujud pada halaman. Seperti pendaftaran, pengubahsuaian maklumat, penambahan data
Teras
Potong hasil data yang ditanya dalam pangkalan data kepada aksara tunggal, dan kemudian. potong mereka menjadi aksara tunggal. Hasil pertanyaan dalam pangkalan data dinilai dengan menilai sama ada paparan halaman tidak normal atau sama ada halaman ditunjukkan.
1. bool blind note
Jika data yang sepadan boleh ditemui dalam pangkalan data, halaman akan dipaparkan secara normal, jika tidak, ia akan menjadi tidak normal.
2. Suntikan buta masa
Tidak kira apa data yang dimasukkan, kesan halaman adalah sama persis Keputusan pertanyaan dalam pangkalan data boleh dinilai berdasarkan sama ada halaman itu ditangguhkan.
1 Cari titik suntikan yang disyaki, cari titik input, dan cari tempat yang berinteraksi dengan pangkalan data
2. Tentukan sama ada terdapat pernyataan SQL yang berniat jahat. dibina oleh suntikan SQL, dan serahkannya Maklumat respons halaman adalah konsisten dengan jangkaan, yang menunjukkan bahawa suntikan wujud.
3. Dapatkan nama pangkalan data
1.获取当前数据库名 and ascii(substr((select database()),1,1))=115 2.获取所有数据库名 and (select ascii(substr(group_concat(schema_name),1,1)) from information_schema.schemata)>0
3. Kira panjang data yang perlu diperoleh
and (select length(group_concat(schema_name)) from information_schema.schemata)>10 --+
4. Dapatkan jadual
5. Dapatkan lajur
6. Mendapatkan data
and if(((select database())='a'),sleep(5),0)--+
Suntikan buta masa boleh berlaku di mana-mana sahaja, pelaporan ralat dan suntikan bool. boleh berlaku, dan sebaliknya, suntikan buta jenis bool boleh digunakan apabila ralat gema berlaku, tetapi bukan sebaliknya.
Alat automasi suntikan SQL, dibangunkan dalam python2, serasi dengan python3. Penggunaan sqlmap sebenarnya mensimulasikan proses permintaan orang ke laman web, dan boleh mengumpul, menganalisis dan memaparkan data yang diperolehi.
python sqlmap.py -h 查看sqlmap可使用的参数 -u 网站的url 向sqlmnap提供注入点
–dbs Dapatkan semua nama pangkalan data
-D Tentukan perpustakaan --jadual Dapatkan maklumat tentang semua jadual dalam pangkalan data yang ditentukan
-D Nyatakan perpustakaan-T Nyatakan jadual--lajur
-D Nyatakan perpustakaan-T Nyatakan jadual-C Lajur 1, lajur 2 - -dump
-r 'Nama fail'
Kajian yang disyorkan: "Tutorial SQL"
Atas ialah kandungan terperinci Pemahaman ringkas tentang suntikan SQL buta. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!