Rumah > Operasi dan penyelenggaraan > Keselamatan > Bagaimana untuk melaksanakan analisis suntikan berasaskan masa sqlmap

Bagaimana untuk melaksanakan analisis suntikan berasaskan masa sqlmap

WBOY
Lepaskan: 2023-05-12 12:10:06
ke hadapan
834 orang telah melayarinya

1. Prakata

Bagaimana untuk mengesan suntikan SQL?

Jawapan saya ialah: mengenai keselamatan Parti A, pengesanan suntikan SQL agak mudah dilakukan.

1) Ralat pengesanan suntikan.

2) Jangan menyuntik laporan ralat bool, kerana positif palsu agak tinggi.

3) Lakukan suntikan masa berdasarkan masa, operasi hubungan dan penyelenggaraan untuk melakukan rakaman db log perlahan, memantau tidur, pemantauan kata kunci penanda aras, anda boleh menambah nombor ID tugas imbasan ke titik perpuluhan tidur masa, sesuai untuk kedudukan. (p.s. Kaedah ini boleh menemui 99% suntikan SQL)

Oleh itu, apabila melakukan suntikan masa berasaskan masa, saya mengehadkan ralat masa dengan sangat keras. Walau bagaimanapun, @chengable sedang melakukan kerja berkaitan keselamatan pada Parti B, dan suntikan masa berdasarkan masa biasanya tidak boleh dilakukan. Difahamkan bahawa dia menapis kewujudan titik suntikan terlebih dahulu, dan kemudian mengesan sqlmapapi.py. Saya juga menggunakan sqlmap untuk ujian sebelumnya. . Walau bagaimanapun, suntikan masa sqlmap agak tepat Bagaimana jika anda tidak mahu menggunakan sqlmapapi.py? Di sini saya akan memindahkan logik suntikan berasaskan masa sqlmap.

2. Analisis ringkas suntikan berasaskan masa sqlmap

Aduan: kod sqlmap tidak piawai, hodoh dan besar. Seseorang mengesyorkan saya untuk membaca kod sumber sqlmap dan belajar banyak sekarang setelah saya memikirkannya, saya menyerah lebih awal.

Jadi, jika anda malas dan tidak mahu melihat kod sumber dan menambah --technique=T -v 3, mari kita lihat muatan pengesanan sqlmap terlebih dahulu.

如何实现sqlmap time-based inject的分析

如何实现sqlmap time-based inject的分析

如何实现sqlmap time-based inject的分析

Nampaknya saya malas dan mencari beberapa cara, seperti yang anda boleh lihat daripada tangkapan skrin :

Mula-mula, sqlmap menyumbat muatan suntikan tidur:

Tidur disumbat pertama(5), selepas mendapati ia telah dieksekusi tidur(0) sekali lagi, dan akhirnya disumbat ia sekali lagi tidur(5).

Kemudian buat tekaan Idea semak umum ialah tidur(5) dahulu, dan kemudian tidur(0) jika kelewatan kedua berjaya. Jika tiada kelewatan ditemui, teruskan tidur(5 Jika kelewatan berjaya sekali lagi, peringatan bahawa mungkin terdapat suntikan akan muncul:

如何实现sqlmap time-based inject的分析

Akhir sekali, Apa yang sangat bijak ialah untuk mengelakkan positif palsu, sqlmap menggunakan syarat penghakiman untuk menghapuskan positif palsu Daripada rajah di atas, anda boleh melihat bahawa sqlmap menguji dua kali untuk menjadikan persamaan itu benar dan menguji dua kali untuk menjadikan persamaan itu tidak benar. Mengikut kelewatan kedua untuk menentukan positif palsu berdasarkan keadaan semasa.

3. Analisis mendalam kod sumber

Kembali ke kod sumber untuk melihat: Berdasarkan beberapa kata kunci sebelumnya, mari pergi terus ke kod untuk melihat . Contohnya, *nampaknya* muncul sebelum mencari kod langkah pertama:

sqlmap/lib/controller/checks.py:

如何实现sqlmap time-based inject的分析

Apa yang saya temui di sini hampir sama dengan apa yang saya teka sebelum ini.

Cari di mana muatan itu, terutamanya muatan dengan syarat if, atau gunakan pertanyaan kata kunci, dan temuinya di sini:

sqlmap/xml/payloads/time_blind.xml:

如何实现sqlmap time-based inject的分析

Anda boleh melihat bahawa muatan setiap satu jika keadaan berada dalam medan vektor.

4. Tutup

Menutup aksara sebelum titik suntikan ialah kunci sama ada ia boleh disuntik.


Alat yang diperhatikan/sqlmap/xml/boundaries.xml, jadi kita juga perlu merujuk kepada pelbagai situasi penutupan di sini:

如何实现sqlmap time-based inject的分析

5. Tentukan sama ada ia terlewat

5.1 Kaedah 1

Merujuk kepada suntikan awvs sebelum ini, saya memikirkan kaedah pengesanan yang lebih mudah difahami. Ambil masa penggunaan 6 ujian biasa tanpa muatan yang disuntik dan hitung nilai purata sebagai masa permintaan asli (ori_time).

Apabila masa suntikan ialah tidur(5), tolak ori_time daripada masa semasa sebagai sleep_time. Jika masa_tidur kurang daripada 4, ia dianggap bahawa kelewatan tidak berlaku. (Memandangkan ori_time dipengaruhi oleh rangkaian dan menjadi lebih besar, ambang dilaraskan kepada empat saat)

Apabila masa suntikan ialah sleep(0), tolak ori_time daripada masa semasa sebagai sleep_time. Jika masa_tidur lebih daripada 2, ini bermakna terdapat penggera palsu dalam kelewatan.

5.2 Kaedah 2

Lihat kod sqlmap sekali lagi, mereka menggunakan masalah matematik yang saya tidak faham (butiran)


Tindakan susulan: Permintaan. queryPage --->wasLastResponseDelayed Anda boleh melihat bahawa logiknya ialah: ambil masa penggunaan 30 ujian biasa tanpa muatan yang disuntik dan masukkannya ke dalam kb.responseTimes. Kira sisihan piawai 30 kali sebagai sisihan dan hitung masa tindak balas yang paling perlahan berdasarkan sisihan sebagai lowerStdLimit:

如何实现sqlmap time-based inject的分析

Nilainya ialah purata 30 kali ganda ditambah TIME_STDEV_COEFF*sisihan piawai (sisihan) Manakala untuk TIME_STDEV_COEFF, menetapkannya kepada 7 boleh menjadikan ketepatan penghakiman 99.999999997440%.

Akhir sekali, tentukan sama ada masa penggunaan semasa permintaan adalah lebih besar daripada lowerStdLimit Jika ia lebih besar daripada kelewatan, ia bermakna kelewatan berlaku, dan jika ia kurang daripada ia bermakna tiada kelewatan. (selain itu, apabila lowerStdLimit kurang daripada 0.5 saat, lowerStdLimit mengambil masa 0.5 saat).

Emosi memberitahu saya bahawa saya harus memilih kaedah satu, dan rasional memberitahu saya bahawa saya harus memilih kaedah dua. Saya masih memilih kaedah dua dan mengukur titik suntikan (butiran). Pengimbasan yang sangat stabil mendapati kelemahan suntikan.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan analisis suntikan berasaskan masa sqlmap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan