როგორ განვსაზღვროთ სერიის რიცხვითი მნიშვნელობები? მნიშვნელობა stovptsiv, scho vyvodyatsya

Qia რობოტი¢ ნაწარმოების ნაწილების თარგმნა Chris Anley Advanced SQL Injection In SQL სერვერიაპლიკაციები. ()
მომავალ სტატიებში, დიდი ალბათობით, ეს თარგმანი დასრულდება.

P.S. თარგმანი სასარგებლო იქნება თანამედროვე და ისტორიული მიზნებისთვის.

სტატიის ორიგინალური სათაური: Push SQL-in'ektsii დანართებში, როგორც ვიკორისტული ენის SQL.

Აბსტრაქტული

ეს სტატია განიხილავს "SQL ინექციის" დამალულ გზებს პოპულარული Microsoft Internet Information Server/Active Server Pages/SQL Server პლატფორმისთვის. იგი განიხილავს ვიკორიზაციის სხვადასხვა ვარიანტს SQL ინექციებიდანართებში განმარტებულია მონაცემთა გადამოწმების მეთოდები, ასევე მონაცემთა ბაზების დაცვა, რომლებშიც შეიძლება იყოს არასწორი უზუსტობები.

შედი

სტრუქტურირებული შეკითხვის ენა (SQL) არის სტრუქტურირებული ენა, რომელიც გამოიყენება მონაცემთა ბაზებთან ურთიერთობისთვის. არსებობს "დიალექტების" სიბრმავე. ფილმი SQLმაგრამ დღეს, ძირითადად, ყველა სუნი ეფუძნება SQL-92 სტანდარტს, ერთ-ერთ ადრინდელ ANSI სტანდარტს. SQL-ის მთავარი ოპერატიული ბლოკი არის შეკითხვა, რომელიც წარმოადგენს გამონათქვამების ერთობლიობას, რომელიც საშუალებას გაძლევთ დაატრიალოთ შედეგების ნაკრები (შედეგების ნაკრები). SQL ვირუსებს შეუძლიათ შეცვალონ მონაცემთა ბაზების სტრუქტურა (Vikorist data manipulation viruses - DLL) და შეცვალონ ისინი (Vikorist data manipulation viruses - DML). აქ ჩვენ გადავხედავთ transact-SQL-ს, რომელიც შემუშავებულია Microsoft SQL Server-ში.

SQL ინექციები შესაძლებელია, თუ თავდამსხმელს შეუძლია თავისი SQL კოდის ჩასმა მოთხოვნაში, რათა აიღოს მონაცემები, რომლებიც გაგზავნილია დანართში.

ორიგინალური SQL ვირუსი ასე გამოიყურება:

ავტორებიდან აირჩიეთ ID, სახელი, გვარი

ეს პროგრამა იღებს "id", "სახელწოდებას" და "გვარს" "ავტორების" ცხრილის სვეტებიდან და აბრუნებს ცხრილის ყველა რიგს. ატმოსფერო შეიძლება იყოს გარშემორტყმული სიმღერით „ავტორი“, მაგალითად:

აირჩიეთ ID, სახელი, გვარი ვლასნიკიდან, სადაც სახელი = "ჯონ" და გვარი = "სმიტი"

კვალი მიუთითებს, რომ ასოს რიგის ასოები გამოყოფილია. ერთი ფეხით. მნიშვნელოვანია გვახსოვდეს, რომ „სახელი“ და „გვარი“ არის ის მონაცემები, რომლებიც უნდა შეიყვანოს მომხმარებელმა. ამ ვიპადკაში zlovmisnik შეძლებს ავტორიტეტული SQL-ის შეყვანას პროგრამაში ავტორიტეტული მნიშვნელობების დამატების გზით. Მაგალითად:

სახელი: jo"hn გვარი: სმიტი

თოდი ვირაზს უახლოეს მომავალში ვხედავ:

აირჩიეთ ID, სახელი, გვარი ავტორებიდან, სადაც სახელი = "jo"hn" და გვარი = "smith"

როდესაც მონაცემთა ბაზა შეეცდება მსგავსი შეკითხვის დამუშავებას, ის დააბრუნებს შემდეგს:

სერვერი: Msg 170, დონე 15, მდგომარეობა 1, ხაზი 1 ხაზი 1: არასწორი სინტაქსი "hn"-თან.

დაფქვის მიზეზი მდგომარეობს იმაში, რომ შემოვიდა ერთი თათი, რომელიც ამაგრებს გამყოფების სტრუქტურას სახსარში. ამრიგად, მონაცემთა ბაზას წარუმატებლად მოუწოდებენ დაუკავშირდეს "hn" ბრძანებას, რაც გამოიწვევს შესრულებას. შედეგად, თავდამსხმელი შეაქვს შემდეგ ინფორმაციას ფორმაში:

სახელი: jo"; ჩამოსაშლელი ცხრილის ავტორები-- გვარი:

გამოჩნდება "ავტორების" ცხრილი, რატომაც მოგვიანებით განვიხილავთ.

შეიძლება გაინტერესებთ, მოვაცილებთ თუ არა ცალკეულ ფეხებს ჩასმის ფორმისგან და ასევე „გამოვცვლით“, რამაც შესაძლოა ჩვენი პრობლემა მოაგვაროს. და თქვენ მართალი იქნებით, თუმცა, ამ მეთოდს აქვს გარკვეული პრობლემები, როგორც უმაღლესი რიგი. პირველ რიგში, კლიენტის მიერ შეყვანილი ყველა ინფორმაცია არ არის "სტრიქონები". კორისტუვაჩის ფორმა იგივე იქნება, რაც ავტორის „იდი“, რომელსაც რიცხვი ეწოდება. მაგალითად, ჩვენი შეკითხვა შეიძლება ასე გამოიყურებოდეს:

აირჩიეთ id, სახელი, გვარი და ავტორები სადაც id=1234

ამ შემთხვევაში, თავდამსხმელს შეუძლია ადვილად დაამატოთ ნებისმიერი SQL ვირუსი რიცხვითი მონაცემების შემდეგ. SQL მოთხოვნების სხვა ტიპებში განსხვავებული განსხვავებებია. მაგალითად, Microsoft Jet DBMS-ში დელიმიტერი იქნება "#" სიმბოლო. სხვა სიტყვებით რომ ვთქვათ, მარტოხელა ფეხების „გაქცევა“ სულაც არ არის მოკვლის უმარტივესი გზა, რადგან შეგიძლიათ დანებდეთ. ამ მოხსენებაზე მოგვიანებით ვისაუბრებთ.

მოდით შევხედოთ შესვლის გვერდს Active Server Pages (ASP) საფუძველზე, რომელიც იყენებს დამატებით SQL-ს მონაცემთა ბაზაზე წვდომის უარს, რათა ავტორიზაცია მისცეს მომხმარებელს ნებისმიერ პროგრამაში.

ჩვენ შევიყვანთ გვერდის კოდს შესვლის ფორმაში შესასვლელად, სადაც შეიყვანთ თქვენი ანგარიშის სახელს და პაროლს.

შესვლის გვერდი

Შესვლა

მომხმარებლის სახელი:
პაროლი:

ქვემოთ მოცემულია კოდი (process_login.asp), რაც ნიშნავს, რომ მონაცემები სწორია.