KomputerPengaturcaraan

Apakah suntikan SQL?

Bilangan tapak dan halaman di web yang semakin berkembang. Diambil untuk pembangunan semua orang-orang yang boleh. Dan pemaju Web baru sering menggunakan kod yang tidak selamat dan tua. Dan ia mewujudkan banyak kelemahan untuk penjenayah dan penggodam. Daripada mereka. Salah satu kelemahan yang paling klasik - SQL suntikan.

Sedikit teori

Ramai orang tahu bahawa majoriti laman dan perkhidmatan pada rangkaian menggunakan penyimpanan pangkalan data SQL. Ini adalah bahasa pertanyaan berstruktur yang membolehkan anda untuk mengawal dan menguruskan penyimpanan data. Terdapat banyak versi yang berbeza daripada sistem pangkalan data pengurusan pangkalan data - Oracle, MySQL, Postgre. Tanpa mengira nama dan jenis, mereka menggunakan data pertanyaan sama. Di sinilah terletak kelemahan yang berpotensi. Sekiranya pemaju gagal untuk menangani dengan betul dan selamat meminta, penyerang boleh mengambil kesempatan ini dan menggunakan taktik khas untuk mendapatkan akses kepada pangkalan data, dan kemudian - dan kepada semua pengurusan laman web ini.

Untuk mengelakkan situasi ini, anda perlu betul mengoptimumkan kod dan memantau dengan teliti dengan cara di mana permintaan yang sedang diproses.

Semak untuk SQL suntikan

Untuk mewujudkan kehadiran kelemahan dalam rangkaian mempunyai berat selesai sistem perisian automatik. Tetapi ia adalah mungkin untuk menjalankan cek mudah secara manual. Untuk melakukan ini, pergi ke salah satu daripada tapak ujian dan bar alamat untuk cuba untuk menyebabkan ralat pangkalan data. Sebagai contoh, skrip pada laman web ini tidak boleh mengendalikan permintaan itu dan tidak mengurangkan mereka.

Sebagai contoh, terdapat nekiy_sayt / index.php? Id = 25

Cara yang paling mudah - untuk meletakkan 25 selepas sebut harga dan menghantar permintaan itu. Jika tiada ralat berlaku, sama ada pada dan tapis semua permintaan dikendalikan dengan betul, atau dilumpuhkan dalam tetapan output mereka. Jika halaman ini dipasang semula dengan masalah, maka pendedahan kepada SQL suntikan.

Selepas dia mendapat tahu, anda boleh cuba untuk menghilangkan ia.

Melaksanakan kelemahan ini perlu mengetahui sedikit tentang SQL-pertanyaan pasukan. Salah seorang daripada mereka - UNION. Ia membawa bersama-sama beberapa hasil pertanyaan menjadi satu. Oleh itu, kita boleh mengira bilangan bidang dalam jadual. CONTOH Pertanyaan pertama ialah:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1.

Dalam kebanyakan kes, rekod ini perlu menjana ralat. Ini bermakna bilangan bidang tidak sama dengan 1. Oleh itu, memilih pilihan 1 atau yang lebih besar, ia adalah mungkin untuk mewujudkan jumlah sebenar mereka:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1,2,3,4,5,6.

Iaitu, apabila kesilapan itu tidak lagi akan muncul, ia bermakna bahawa bilangan bidang meneka.

Terdapat juga penyelesaian alternatif kepada masalah ini. Sebagai contoh, apabila sebilangan besar bidang - 30, 60 atau 100. Arahan ini GROUP BY. kumpulan itu hasil pertanyaan pada apa-apa alasan, sebagai contoh id:

  • nekiy_sayt / index.php? id = 25 GROUP BY 5.

Jika kesilapan itu tidak diterima, maka bidang lebih daripada 5. Oleh itu, pilihan menggantikan dari jarak yang agak luas, ia adalah mungkin untuk mengira berapa banyak daripada mereka sebenarnya.

Contoh SQL suntikan - untuk pemula yang ingin mencuba sendiri dalam ujian tapaknya. Adalah penting untuk ingat bahawa untuk akses yang tidak dibenarkan kepada barang lain yang tersedia Kanun Jenayah.

Jenis-jenis utama suntikan

Melaksanakan kelemahan oleh SQL suntikan dalam beberapa penjelmaan. Berikut adalah kaedah yang paling popular:

  • UNION pertanyaan SQL suntikan. Satu contoh mudah jenis ini telah diperiksa atas. Ia direalisasikan disebabkan oleh kesilapan dalam memeriksa data yang diterima, yang tidak ditapis.

  • berdasarkan kesilapan suntikan SQL. Seperti namanya, jenis ini juga menggunakan kesilapan, hantar ungkapan terdiri sintaksis tidak betul. Kemudian ada pemintasan pengepala sambutan, menganalisis yang boleh dilakukan kemudian SQL suntikan.

  • Disusun pertanyaan SQL suntikan. kelemahan ini ditentukan dengan melakukan permintaan berturut-turut. Ia mempunyai ciri-ciri tambahan pada akhir tanda ";". Pendekatan ini sering dilaksanakan untuk mengakses pelaksanaan membaca dan menulis data atau sistem operasi fungsi, jika keistimewaan membenarkannya.

Perisian untuk mencari SQL-kelemahan

Ada untuk SQL suntikan, program ini biasanya mempunyai dua komponen - satu laman web yang mengimbas kelemahan dan menggunakannya untuk mendapat akses kepada data. Terdapat beberapa alat untuk platform hampir semua diketahui. fungsi mereka sangat memudahkan laman web memeriksa untuk retak SQL suntikan anda.

Sqlmap

pengimbas yang sangat berkuasa yang berfungsi dengan kebanyakan pangkalan data. Ia menyokong pelbagai kaedah pelaksanaan SQL suntikan. Ia mempunyai keupayaan untuk mengenal pasti jenis keretakan kata laluan hash dan kamus secara automatik. Masa kini dan fungsi muat naik fail dan dimuat turun dari pelayan.

Pemasangan pada Linux dilakukan dengan menggunakan arahan:

  • git klon https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • cdsqlmap-dev /
  • --wizard ./sqlmap.py.

Untuk Windows tersedia sebagai pilihan dengan baris arahan dan antara muka pengguna grafik.

suntikan jSQL

jSQL Injection - alat cross-platform untuk menguji menggunakan kelemahan SQL. Ditulis dalam Java, jadi sistem mesti dipasang JRE. Dapat mengendalikan DAPATKAN pertanyaan, POST, header, cookie. Ia mempunyai antara muka grafik yang mudah.

Pemasangan pakej perisian ini adalah seperti berikut:

wget https://github.com/`curl -s https: //github.com/ron190/jsql-injection/releases | grep-E-o '/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] . {1,2} [0-9] {1,2} .jar '| kepala-n 1`

Pelancaran adalah dengan menggunakan java arahan -jar ./jsql-injection-v*.jar

Dalam usaha untuk memulakan tapak ujian pada SQL-kelemahan, anda perlu memasukkan alamat dalam bidang atas. Mereka adalah berasingan untuk GET dan POST. Dengan keputusan yang positif, senarai jadual yang tersedia akan dipaparkan dalam tetingkap kiri. Anda boleh melihat mereka dan belajar beberapa maklumat sulit.

tab «page Admin» digunakan untuk mencari panel pentadbiran. Di atasnya melalui template khas mencari secara automatik sistem merekodkan pengguna istimewa. Daripada mereka yang anda boleh mendapatkan hanya olahan kata laluan. Tetapi dia mempunyai dalam toolbox program.

Selepas mencari semua kelemahan dan suntikan pertanyaan perlu, alat ini akan membolehkan pelayan untuk mengisi dalam fail anda, atau sebaliknya, memuat turun dari sana.

SQLi Dumper V.7

program ini - mudah untuk menggunakan alat untuk mencari dan melaksanakan kelemahan SQL. Ia menghasilkan PBB adalah berdasarkan kepada apa yang dikenali sebagai Dorcas. senarai mereka boleh didapati di Internet. Dorca untuk SQL suntikan - ini adalah template khas pertanyaan carian. Dengan bantuan mereka, anda boleh mencari tapak berpotensi terdedah melalui mana-mana enjin carian.

Peralatan untuk latihan

Itsecgames.com di laman web terdapat satu set khas alat-alat yang membolehkan contoh yang menunjukkan bagaimana untuk melakukan suntikan SQL dan menguji. Untuk mendapat faedah, ia adalah perlu untuk memuat turun dan memasang. Arkib yang mengandungi satu set fail, yang merupakan struktur laman web ini. Untuk memasang ia perlu dalam sistem yang sedia ada dalam set server Apache web, MySQL dan PHP.

Membongkar arkib dalam folder pelayan web, anda perlu pergi ke alamat yang dimasukkan apabila memasang ini perisian. Halaman dengan pendaftaran pengguna. Di sini anda perlu memasukkan maklumat anda dan klik «Buat». Bergerak pengguna ke skrin baru, sistem menggesa anda untuk memilih salah satu daripada kes-kes ujian. Di antara mereka ada kedua-duanya digambarkan oleh suntikan, dan banyak item ujian lain.

Ia adalah bernilai mengingati contoh jenis SQL suntikan GET / Search. Di sini anda perlu pilih dan klik «Hack». Sebelum pengguna akan muncul, dan tiruan tali untuk membuka tapak filem. Untuk menyusun filem boleh lama. Tetapi hanya ada 10. Sebagai contoh, anda boleh cuba untuk masuk ke dalam Iron Man. Ia akan menunjukkan filem itu, maka laman web yang berfungsi, dan jadual yang dikandungnya. Sekarang kita perlu menyemak jika penapis aksara khas skrip, dalam petikan tertentu. Untuk melakukan ini, tambah 'dalam bar alamat. " Lebih-lebih lagi, ini mesti dilakukan selepas tajuk filem itu. laman web ini akan memberi Ralat ralat: Anda mempunyai ralat dalam sintaks SQL anda; semak manual yang sepadan dengan versi pelayan MySQL anda untuk sintaks hak untuk menggunakan berhampiran '%' 'di baris 1, yang menyatakan bahawa watak-watak masih tidak dikendalikan dengan betul. Jadi, anda boleh cuba untuk menggantikan permintaan anda. Tetapi kita perlu mengira jumlah bidang. Ia digunakan untuk pesanan ini oleh, yang diperkenalkan selepas petikan: http://testsites.com/sqli_1.php?title=Iron+Man 'perintah oleh 2 - & action = carian.

Arahan ini hanya memaparkan maklumat mengenai filem itu, iaitu, bilangan bidang adalah lebih besar daripada 2. sempang double memberitahu server bahawa permintaan lain mesti dibuang. Sekarang kita mempunyai untuk menyelesaikan, meletakkan semakin penting selagi kesilapan itu tidak dicetak. Akhirnya, ternyata bahawa bidang akan 7.

Kini sudah tiba masanya untuk mendapatkan sesuatu yang berguna daripada asas. sedikit akan mengubah suai permintaan dalam bar alamat, membawanya kepada bentuk yang: http://testsites.com/sqli_1.php?title=Iron+Man 'kesatuan pilih 1, database (), pengguna (), 4, kata laluan, 6, 7 daripada pengguna - & action = carian. Hasil daripada pelaksanaan akan memaparkan rentetan dengan Hash kata laluan, yang boleh dengan mudah ditukar kepada simbol difahami menggunakan salah satu perkhidmatan dalam taliannya. A menjelmakan sedikit dan mengambil nama medan dengan login, anda boleh mendapat akses kepada kemasukan orang lain, seperti admin laman web ini.

Produk ini mempunyai jenis suntikan spesies berat badan, di mana untuk mengamalkan. Perlu diingat bahawa penggunaan kemahiran ini dalam rangkaian di tapak sebenar mungkin satu kesalahan jenayah.

Suntikan dan PHP

Sebagai peraturan, PHP-kod dan bertanggungjawab terhadap permintaan pemprosesan perlu datang daripada pengguna. Oleh itu, pada tahap ini anda perlu untuk membina pertahanan terhadap SQL suntikan dalam PHP.

Pertama, mari kita memberi beberapa garis panduan mudah ini, atas dasar mana ia adalah perlu untuk berbuat demikian.

  • Data perlu sentiasa diproses sebelum diletakkan ke dalam pangkalan data. Ini boleh dilakukan sama ada dengan menggunakan ungkapan-ungkapan yang sedia ada, atau dengan menganjurkan pertanyaan secara manual. Di sini juga, perlu mengambil kira bahawa nilai angka yang ditukar ke jenis yang diperlukan;
  • Dielakkan digesa pelbagai struktur kawalan.

Kini sedikit mengenai kaedah-kaedah menyusun pertanyaan dalam MySQL untuk melindungi SQL suntikan.

Dalam merangka apa-apa ungkapan untuk query adalah penting untuk memisahkan data dari kata kunci SQL.

  • * SELECT DARIPADA Rajah MANA name = Zerg.

Dalam konfigurasi ini, sistem mungkin berfikir bahawa Zerg - nama mana-mana bidang, jadi anda perlu sertakan dalam sebut harga.

  • SELECT * FROM Rajah MANA name = 'Zerg.

Walau bagaimanapun, ada kalanya nilai sendiri mengandungi petikan.

  • SELECT * FROM Rajah MANA name = 'Côte d'Ivoire.

Di sini hanya mengendalikan sebahagian daripada Côte d, dan selebihnya boleh dilihat sebagai satu pasukan, yang, sememangnya, tidak. Oleh itu, ralat berlaku. Maka anda perlu ini jenis data saringan. Untuk melakukan ini, menggunakan garis sendeng terbalik yang - \.

  • SELECT * FROM Rajah MANA name = 'kucing-d \' Ivoire.

Semua di atas merujuk kepada baris. Jika tindakan yang berlaku dengan nombor, maka ia tidak memerlukan petikan atau garis condong. Walau bagaimanapun, mereka perlu dikehendaki secara paksa membawa kepada jenis data yang dikehendaki.

Terdapat cadangan yang nama medan hendaklah disertakan dalam backquotes. Simbol ini adalah di sebelah kiri papan kekunci, bersama-sama dengan tilde "~". Ini adalah untuk memastikan bahawa MySQL tepat dapat membezakan nama bidang dari kata kunci anda.

kerja dinamik dengan data

Selalunya, untuk mendapat apa-apa data dari pangkalan data menggunakan pertanyaan, yang dihasilkan secara dinamik. Sebagai contoh:

  • SELECT * FROM Rajah MANA nombor = '$ number'.

Di sini, $ nombor boleh ubah diluluskan sebagai menentukan nilai padang. Apa yang akan berlaku jika ia menjadi 'Côte d'Ivoire'? Error.

Untuk mengelakkan masalah ini, sudah tentu, anda boleh termasuk "petikan sihir" Tetapan. Tetapi kini data akan ditayangkan di mana perlu dan tidak perlu. Di samping itu, jika kod yang ditulis dengan tangan, anda boleh menghabiskan lebih banyak masa untuk membuat tahan retak sistem itu sendiri.

Untuk penambahan bebas daripada tanda palang boleh menggunakan mysql_real_escape_string.

$ Nombor = mysql_real_escape_string ($ bilangan);

$ Tahun = mysql_real_escape_string ($ tahun);

$ Pertanyaan = "MASUKKAN KE meja (bilangan, tahun, kelas) VALUES ( '$ number', '$ tahun', 11)".

Walaupun kod dan peningkatan dalam jumlah, lagi berpotensi ia akan bekerja lebih selamat.

ruang letak

Pemegang tempat - sejenis penanda yang mana sistem mengakui bahawa ini adalah tempat yang tepat untuk menggantikan satu majlis khas. Sebagai contoh:

$ Sate = $ mysqli-> menyediakan ( "Daerah SELECT DARIPADA Nombor MANA Name =?");

$ Sate-> bind_param ( "s", $ number);

$ Sate-> melaksanakan ();

bahagian kod ini mengambil latihan permintaan template dan kemudian mengikat jumlah berubah-ubah, dan melaksanakannya. Pendekatan ini membolehkan anda untuk berpecah pemprosesan pertanyaan dan pelaksanaannya. Oleh itu, ia boleh disimpan daripada penggunaan kod berniat jahat adalah SQL-.

Apa mungkin penyerang

Sistem perlindungan - faktor yang sangat penting, yang tidak boleh diabaikan. Sudah tentu, laman web kad perniagaan yang mudah akan menjadi lebih mudah untuk memulihkan. Dan jika ia adalah besar portal, perkhidmatan, forum? Apakah kesan jika anda tidak berfikir tentang keselamatan?

Pertama, seorang hacker boleh memecahkan integriti kedua-dua asas dan keluarkan sepenuhnya. Dan jika pentadbir laman atau hoster tidak membuat sandaran, anda akan mempunyai masa sukar. Di atas semua, penceroboh, retak satu tapak, boleh pergi kepada yang lain yang dicatatkan pada pelayan yang sama.

Seterusnya ialah kecurian maklumat peribadi pengunjung. Bagaimana untuk menggunakan - segala-galanya hanya dihadkan oleh imaginasi penggodam. Tetapi dalam mana-mana kes, kesan-kesan tidak akan menjadi sangat menyenangkan. Terutamanya jika mengandungi maklumat kewangan.

Juga, penyerang boleh menggabungkan pangkalan data diri anda dan kemudian memeras wang untuk pengembaliannya.

pengguna maklumat yang salah bagi pihak pentadbir laman web ini, orang yang mereka tidak menjadi, juga boleh menjadi kesan negatif yang mungkin fakta penipuan.

kesimpulan

Semua maklumat di dalam artikel ini disediakan untuk tujuan maklumat sahaja. Gunakan ia hanya perlu untuk menguji projek-projek mereka sendiri apabila ia mengesan kelemahan dan menanganinya.

Untuk kajian yang lebih mendalam teknik-teknik bagaimana untuk menjalankan SQL suntikan, ia adalah perlu untuk memulakan dengan keupayaan penyelidikan sebenar dan ciri-ciri bahasa SQL. Sebagai pertanyaan yang disusun, kata kunci, jenis data, dan penggunaan semua.

Juga tidak boleh melakukannya tanpa memahami operasi PHP dan unsur-unsur HTML fungsi. Kegunaan utama mata terdedah untuk suntikan - satu baris alamat, dan pelbagai medan carian. Pembelajaran fungsi PHP, kaedah pelaksanaan dan ciri-ciri akan memikirkan bagaimana untuk mengelakkan kesilapan.

Kehadiran banyak alat perisian siap membolehkan analisis yang mendalam mengenai kelemahan laman diketahui. Salah satu produk yang paling popular - kali linux. Imej sistem pengendalian berasaskan Linux, yang mengandungi sejumlah besar alat dan program-program yang boleh menjalankan analisis yang menyeluruh kekuatan tapak.

Apa yang anda perlu tahu bagaimana untuk menggodam laman web ini? Ia amat mudah - ia adalah perlu untuk menyedari kelemahan potensi projek atau laman web anda. Terutamanya jika ia adalah kedai dalam talian dengan pembayaran dalam talian, di mana data pembayaran pengguna boleh dikompromi oleh penyerang.

Untuk kajian profesional kakitangan keselamatan maklumat yang sedia ada akan dapat menyemak laman web untuk pelbagai kriteria dan mendalam. Bermula dari yang mudah HTML-suntikan dan dengan kejuruteraan sosial dan phishing.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ms.unansea.com. Theme powered by WordPress.