KompyuterlarDasturlash

SQL injection nima?

saytlar va veb-sahifalar soni tobora ortib bormoqda. kim jon o'sha rivojlantirish uchun qabul qilingan. Va Ajam veb-ishlab chiquvchilar ko'pincha xavfli va eski kod foydalaning. Va u jinoyatchilar va hackerlar uchun yo'llar topilmoqda ko'p yaratadi. ular bulardan. SQL-Injection - eng mumtoz zaifliklar biri.

nazariyasi A bit

Ko'p odamlar tarmoq saytlar va xizmatlar ko'pchiligi SQL ma'lumotlar bazasi saqlash foydalanayotgan deb bilaman. Bu bo'lgan tuzilmalashgan so'rovlar tili Agar ma'lumotlar saqlash nazorat va boshqarish imkonini beradi. Oracle, MySQL, Postgre - bazasi boshqaruv tizimi ma'lumotlar bazasi juda ko'p turli versiyalari mavjud. Nima bo'lishidan qat'iy nazar nomi va turi, ular bir xil so'rovlar ma'lumotlarni foydalaning. Bu salohiyati zaifligini yotadi bu erda. Tuzuvchi to'g'ri band va xavfsiz talab qilish muvaffaqiyatsiz bo'lsa, bir tajovuzkor, bu foyda olish va keyin bazasi kirish uchun, va maxsus taktikasini foydalanishingiz mumkin - va barcha sayt boshqarish uchun.

Bunday holatlarni oldini olish uchun, siz to'g'ri kodni optimallashtirish va yaqindan bir so'rov qayta ishlanmoqda bo'lgan tarzda kuzatib borish kerak.

SQL-in'ektsiya uchun tekshiring

tarmog'ida bir zaiflikning borligini isbotlamoq uchun yakunladi avtomatlashtirilgan dasturiy ta'minot tizimlari og'irligi. Lekin u qo'lda oddiy chek amalga oshirish mumkin bo'ladi. Buning uchun, sinov saytlardan biriga borib manzili satrida bir ma'lumotlar bazasi xato sabab sinash uchun. Misol uchun, saytida skript so'rov ishlayolmaydi va ularni tartib bo'lmaydi.

Misol uchun, / index.php bor nekiy_sayt? id = 25

eng oson yo'li - yuborgan keyin 25 qo'yish va so'rov yuboring. hech xato, ham sayt va filtr ustida sodir bo'lsa, barcha so'rovlar to'g'ri ishlov beradi, yoki ularning mahsulotining sozlash o'chiradi. sahifa muammolari bilan qayta bo'lsa, SQL-in'ektsiya uchun xavfsizlik kamomadining.

u bilib so'ng, undan qutilish uchun harakat qilib ko'rishingiz mumkin.

haqida bir oz bilish bu xavfsizlik kamomadi ehtiyoj amalga oshirish uchun ishlatiladigan SQL-so'rovlarni jamoalari. Ulardan biri - Union. U o'z ichiga bir necha so'rovlar natijalarini birgalikda keladi. Shunday qilib, biz jadvalda maydonlar sonini hisoblash mumkin. O'RNAK birinchi so'rovlar hisoblanadi:

  • nekiy_sayt / index.php? id = 25 Union Applications 1.

Ko'p hollarda, bu rekord xato ishlab zarur. Bu sohalarda soni, ularning aniq sonini belgilash mumkin 1 yoki undan katta variantlarini tanlashda, Shunday qilib 1. teng emas, degan ma'noni anglatadi:

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

xato endi paydo bo'ladi, deb u sohalarda soni taxmin qilish degan ma'noni anglatadi, deb.

Bu muammo muqobil yechim ham bor. Misol uchun, qachon sohalarda katta soni - 30, 60 yoki 100, bu buyruq GROUP BY. Bu guruhlar, masalan, ID uchun hech qanday asoslar ustida bir so'rovning, natijalari:

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

Xato qabul qilinmagan bo'lsa, u holda dalalar ortiq 5. Shunday qilib, juda keng doiradagi variantlarini o'rnini bosuvchi, aslida ularning qancha hisoblash mumkin.

Bu, masalan, SQL-Injection - uning sayt test o'zlarini sinash istayman Ajam uchun. Bu Jinoyat kodeksining boshqa mavjud moddasiga ruxsatsiz kirish uchun, deb eslash muhim ahamiyatga ega.

in'ektsiya asosiy turlari

bir necha mexanizmlar SQL-in'ektsiya xavfsizlik jihatidan ancha amalga oshirish. Keyingi eng mashhur usul bor:

  • Union so'rovlar SQL injection. Ushbu turdagi oddiy misol Yuqorida ko'rib chiqildi. Bu tufayli, suzilgan emas kiruvchi ma'lumotlarni, tekshirish bir xato uchun amalga oshirilgan.

  • Xato asoslangan SQL injection. nomidan ham ko'rinib turibdiki, bu turdagi ham sözdizimsel noto'g'ri topgan ifodalarini yuborib, xato foydalanadi. Keyin SQL-ukol amalga oshirilishi mumkin javob satrlari, tahlil qilish ushlash bor.

  • Hasrat SQL so'rovlarni ukol. Bu zaifliklarni keyingi so'rovlarini amalga tomonidan belgilanadi. Bu belgi oxirida qo'shimcha bilan xarakterlanadi ";". imtiyozlar, uni imkon bo'lsa, bu yondashuv, ko'pincha, o'qish va ma'lumotlar yozish yoki operatsion tizimi vazifalarini amalga oshirishni kirish uchun amalga oshiriladi.

SQL-zaifliklarni qidirishga Software

SQL-in'ektsiya uchun bormi, dastur, odatda, ikki komponentlar bor - bir sayt mumkin zaifliklarni harakatlanish va ma'lumotlarga ruxsat olish uchun foydalanishingiz mumkin. deyarli barcha ma'lum platformalar uchun, ba'zi uskunalar bor. Ularning funktsional juda SQL-ukol yorilish veb-sayt tekshirish osonlashtiradi.

Sqlmap

eng bazalari bilan ishlaydi Juda kuchli skaner. Bu SQL-in'ektsiya amalga oshirish turli usullarini qo'llab-quvvatlaydi. U avtomatik ravishda parol hash yorilish va lug'atda turini aniqlash qobiliyati bor. Serverdan hozirgi va funktsional fayl yuklash va yuklab olish.

Linux o'rnatish buyruqlar yordamida amalga oshiriladi:

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

Windows uchun buyruq qatorni va grafik foydalanuvchi interfeysi bilan bir variant sifatida foydalanish mumkin.

jSQL Injection

jSQL Injection - SQL zaifliklarni sinov qilish uchun, kross-platformali vositasi. Java yozilgan, shuning uchun tizim JRE o'rnatilgan bo'lishi kerak. so'rovlar, pochta, nom, cookie GET band qodirdir. Bu qulay grafik interfeysga ega.

Ushbu dastur paketi o'rnatish mumkin:

wget https://github.com/`curl -S https: //github.com/ron190/jsql-injection/releases | "Grep-E Optsiya -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 "| bosh-n 1`

Ishga tushirilishi -jar ./jsql-injection-v*.jar buyruq Java foydalanib hisoblanadi

SQL-zaifligi to'g'risidagi test sayt boshlash uchun, siz eng yaxshi sohasida manzilini kiritishingiz kerak. Ular qiling va mavzu uchun alohida bo'ladi. ijobiy natija bilan, mavjud jadvallar ro'yxati tark oynada paydo bo'ladi. Siz ularni ko'rish va ba'zi maxfiy ma'lumotlarni o'rganish mumkin.

tab «Admin sahifa» ma'muriy panellar topish uchun ishlatiladi. maxsus andozalari orqali u avtomatik ravishda tizimi imtiyozli foydalanuvchilarni ro'yxatdan tekshirib ko'radi. Ulardan siz parol faqat hash olishingiz mumkin. Lekin u dasturning avtomobil bor.

Barcha zaifliklar va quyish kerak surishtirib topish so'ng, vositasi server sizning faylida to'ldirish yoki, aksincha, u erda uni yuklab olish uchun imkon beradi.

SQLi Dumper v.7

Bu dastur - oson SQL zaifliklarni topish va amalga oshirish uchun vositasi foydalanish. BMT deb atalmish Dorcas asoslangan ishlab chiqaradi. Ularning ro'yxati Internetda topish mumkin. SQL-in'ektsiya uchun DORCA - bu qidiruv so'rovlarini maxsus andozalar mavjud. Ularning yordami bilan, siz har qanday qidiruvi orqali potentsial zaif sayt topishingiz mumkin.

tayyorlash uchun Asboblar

Itsecgames.com saytida misol SQL Injection qilish va uni sinash uchun qanday ko'rsatadi beradi vositalarini maxsus majmui bor. foyda uchun, u yuklab olish va o'rnatish uchun zarur. arxiv sayt tuzilishi fayllar majmuini o'z ichiga oladi. o'rnatish uchun bu Apache veb-server, MySQL va PHP majmui mavjud tizimida kerak bo'ladi.

veb-server papkada arxiv ochish, bu o'rnatishda kirib manzilga borish kerak dasturiy ta'minot. Foydalanuvchi ro'yxatdan bilan sahifasi. Bu yerda siz ma'lumotni kiriting va «yaratish» tugmasini bosing kerak. yangi ekranga foydalanuvchi ko'chirish, tizim sinov hollarda biri tanlash uchun sizdan talab qiladi. Ular orasida, ham in'ektsiya, va boshqa ko'plab sinov ob'ektlar tomonidan tasvirlangan bor.

Bu SQL-in'ektsiya turi olish / Izlash misol inobatga arziydi. Bu yerda siz «Hack», uni tanlash va bosishingiz kerak bo'ladi. Oldin foydalanuvchi paydo, va bir kino sayt qidiruv tor taqlid qiladi. tartiblashtirish uchun filmlar uzoq bo'lishi mumkin. Lekin faqat 10. Masalan bor, siz Iron Man kirishga harakat qilib ko'rishingiz mumkin. Bu film, keyin sayt ishlaydi va u o'z ichiga jadvallarni ko'rsatadi. Endi biz alohida Iqtibos bilan, maxsus belgilar skript filtrlar tekshirish kerak. Buning uchun, manzil panelida "qo'shing." Bundan tashqari, bu film nomi keyin amalga oshirilishi kerak. sayt xato error beradi: Agar SQL sintaksisi xato bor; belgilar hali to'g'ri hal qilinmaydi deyilgan liniyasi 1 da "yaqin"% 'foydalanish to'g'ri sintaksisi uchun MySQL server versiyasiga mos keladi qo'llanma tekshirib ko'ring. Shunday qilib, siz so'rov o'rniga harakat qilib ko'rishingiz mumkin. Lekin, biz birinchi sohalarda sonini hisoblash kerak. & Action = Izlash - 2 http://testsites.com/sqli_1.php?title=Iron+Man "tartibi: Bu tirnoq keyin joriy qilingan, ushbu tartibda, uchun ishlatiladi.

Ushbu buyruq faqat, sohalarda soni ikki defis boshqa so'rovlar tashlanadi kerak server hikoya katta 2. ortiq bo'ladi film haqida ma'lumot ko'rsatadi. Endi biz uzoq xato bosilgan emas, deb oshirish muhimligini qo'yib, chiqib tartiblashtirish kerak. Nihoyat, u maydonlarni 7 bo'ladi ekan.

Endi bazasini chiqib foydali narsa olish vaqti keldi. ozgina bir shakliga olib, manzil panelida so'rov o'zgartirish bo'ladi:) (,) (http://testsites.com/sqli_1.php?title=Iron+Man "uyushmasi 1 tanlash, ma'lumotlar bazasi foydalanuvchi, 4, parol, 6, 7 foydalanuvchilarning - & action = search. osonlik bilan onlayn xizmatlar biri yordamida tushunarli ramzlari aylanadi mumkin parol aralashgan bilan mag'lubiyatga ko'rish edi uni amalga oshirish natijasida. A bir oz conjured va siz bunday sayt admin deb, birovning kirishi uchun ruxsat olish mumkin login bilan bir maydon nomini oldi.

mahsulot amaliyotga qaysi bir vazn turlari Kiritish usullari mavjud. Bu haqiqiy saytlari tarmog'ida bu ko'nikmalarni qo'llash jinoyat bo'lishi mumkin, deb unutmaslik kerak.

Injection va PHP

Odatda, PHP-kod va foydalanuvchi kelayotgan zarur ishlash istaklari uchun javobgar bo'ladi. Shuning uchun, bu darajada siz PHP SQL-in'ektsiya qarshi mudofaa qurish kerak.

Birinchidan, uning buni amalga oshirish uchun zarur bo'lgan asosida, bir necha oddiy ko'rsatmalarni bersin.

  • Ma'lumotlar har doim ma'lumotlar bazasiga joylashtiriladi oldin qayta ishlanishi lozim. Bu, mavjud ifodalar yordamida yoki qo'lda so'rovlarni tashkil qilish orqali ham amalga oshirilishi mumkin. Bu yerda, shuningdek, ularning soni qadriyatlar kerak turiga aylanadi, deb hisobga olish kerak;
  • Yo'l qo'ymaslik, turli nazorat tuzilmalari so'raladi.

Endi SQL-in'ektsiya qarshi himoya qilish uchun MySQL so'rovlarni tuzish qoidalari haqida bir oz.

so'rov uchun har qanday ifodalar tuzish yilda SQL kalit so'zlar ma'lumotlarni ajratish uchun muhim ahamiyatga ega.

  • stol WHERE name = Zerg tanlang *.

har qanday maydon nomi, shuning uchun siz tirnoq ichiga kerak - bu yapılandırmada, tizim Zerg deb o'ylayman mumkin.

  • SELECT * stol Qayerdan nomi = 'Zerg.

qiymati o'zi tirnoq ichiga olgan Biroq, vaqtlar bor.

  • SELECT * stol Qayerdan name = "Fil Suyak Sohili".

Bu erda faqat Côte D qismini band, va qolgan bir jamoa, albatta, yo'q, deb hisoblanadigan mumkin. Shuning uchun, xato bo'ladi. Keyin siz skrining ma'lumotlar bunday kerak. \ - Buning uchun, bir teskari egri chiziq foydalaning.

  • SELECT * stol Qayerdan name = "mushuk-d \ sohilga.

Yuqoridagi barcha satrlar nazarda tutadi. harakat bir qator bo'lib olsa, u har qanday tirnoq yoki egri chiziq kerak emas. Biroq, ular majburan kerakli ma'lumotlar turiga olib kerak.

maydon nomi backquotes ichiga olinishi lozim tavsiyalar bor. Bu belgi "~" bir tilde bilan birga, klaviatura chap tomonida bo'ladi. Bu MySQL to'g'ri kalit maydonga nomini ajrata mumkin ishonch hosil qilish uchun bo'ladi.

ma'lumotlar bilan dinamik ish

Juda tez-tez, dinamik ravishda hosil so'rovlarni foydalanib ma'lumotlar bazasi, har qanday ma'lumotlarni olish uchun. Misol uchun:

  • SELECT * stol Qayerdan soni = '$ soni'.

Bu yerda, o'zgaruvchan $ soni maydon qiymatini aniqlash kabi uzatiladi. u "Kot-d'Ivuar» oladi, agar nima bo'ladi? Xato.

Bu muammo oldini olish uchun, albatta, siz "sehrli tirnoq" parametrlarini o'z ichiga olishi mumkin. Ammo hozir ma'lumotlar zarur va zarur bo'lmagan namoyish qilinadi. kodi qo'lda yozilgan bo'lsa Bundan tashqari, siz tizimini o'zi yorilish chidamli yaratish uchun bir oz ko'proq vaqt sarflash mumkin.

Agar egri chiziq mustaqil Bundan uchun mysql_real_escape_string foydalanishingiz mumkin.

$ Soni = mysql_real_escape_string ($ soni);

$ Yili = mysql_real_escape_string ($ yil);

$ Query = "jadvalga joylashtiring (soni, yil, sinf) VALUES ( '$ soni', '$ yili, 11)".

kodi va hajmi ortib, hali-da potentsial u ancha xavfsizroq ish bo'lardi.

yertutucuları

Yertutucuları - tizimi bu siz maxsus vazifasini o'rniga kerak joy ekanligini tan qaysi ma'lumoti bir xil. Misol uchun:

$ Davlat = $ mysqli-> tayyorlash ( "Tuman tanlash soni Qayerdan nomi =?");

$ Sate-> bind_param ( "S", $ soni);

$ Sate-> (execute);

kodi Ushbu bo'limda ta'lim talab shablonni oladi va keyin o'zgaruvchan sonini bog'laydi va uni amalga oshiradi. Bunday yondashuv, so'rovlar ishlash va uning bajarilishini split beradi. Shunday qilib, u zararli kodi foydalanish najot mumkin SQL- bo'ladi.

Nima kuch bir tajovuzkor

Himoyalash tizimi - e'tiborsiz mumkin emas juda muhim omil. Albatta, oddiy ish karta sayt tiklash osonroq bo'ladi. Va u katta portali, xizmat, forum bo'lsa? Agar siz xavfsizlik haqida o'ylamayman bo'lsa oqibatlari qanday?

Birinchidan, bir hacker ikkala bazasini butunligini sindirish mumkin va uni butunlay olib tashlash. sayt administratori yoki sahibesi zahirasini qilmaydi bo'lsa, siz qattiq marta bo'ladi. Avvalambor, bitta sayt xafa qilma, bir tajovuzkor, o'sha serverda posted boshqa borish mumkin.

Keyingi Saytga shaxsiy ma'lumotlarni o'g'irlik hisoblanadi. Qanday foydalanish - har bir narsa faqat hacker xayol kuchi bilan cheklangan. Lekin har qanday holatda ham, oqibatlari juda yoqimli bo'lmaydi. Ayniqsa, agar moliyaviy ma'lumotlarni o'z ichiga olgan.

Shuningdek, tajovuzkor ma'lumotlar bazasini o'zingizni birlashtirish mumkin va keyin uning qaytishi uchun pul undirish.

sayt administratori nomidan noto'g'ri ma'lumot foydalanuvchilar, ular mavjud bo'lgan emas shaxs, shuningdek, iloji firibgarlik faktlar sifatida salbiy oqibatlari bo'lishi mumkin.

xulosa

Ushbu maqolada barcha ma'lumotlar faqat bilim maqsadida taqdim etiladi. u faqat u zaifliklarni belgilangan bo'lsa, o'z loyihalarini sinash va ularni hal qilish kerak foydalaning.

SQL-ukol olib qanday uslubiyotlarini yanada chuqur o'rganish uchun, SQL tilining dolzarb tadqiqot imkoniyatlari va xususiyatlari bilan boshlash kerak. olingan so'rovlar, kalit so'zlar, ma'lumotlar turlari va unga barcha foydalanish kabi.

Shuningdek PHP va HTML elementlar vazifalarni ishlashini tushunish holda, albatta, mumkin emas. asosiy foydalanish in'ektsiya uchun zaif nuqtalari - bir manzil liniyasi, va turli qidirish sohasida. PHP vazifalari o'rganish, amalga oshirish va xususiyatlari usuli xatolarga yo'l qo'ymaslik uchun qanday tushunishga bo'ladi.

ko'p tayyor dasturiy vositalar mavjudligi sayt ma'lum zaifliklar haqida chuqur tahlil qilish uchun imkon beradi. Eng mashhur mahsulotlar biri - Kali Linux. sayt kuchi har tomonlama tahlil amalga oshirish mumkin vositalari va dasturlari, bir qator o'z ichiga olgan bir Linux asosidagi operatsion tizimi, bu tasvir.

Nima saytga Hack qanday bilish kerak? Bu juda oddiy - bu sizning loyiha yoki veb-salohiyati zaifliklarni xabardor bo'lishi zarur. Bu to'lov foydalanuvchi ma'lumotlari bir tajovuzkor tomonidan mumkin onlayn to'lov bilan onlayn do'kon, ayniqsa, agar.

mavjud axborot xavfsizligi xodimlari professional o'rganish uchun mezonlar va chuqur turli sayt nazorat qilish imkoniyatiga ega bo'ladi. oddiy HTML-inyeksiya va ijtimoiy muhandislik va fishing uchun boshlash.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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