Praktiki nümunə
Last updated
Last updated
Bizə bu labaratoriya tapşırığında "WHERE" bəndindən istifadə edilərək göstərilən məlumatlarda SQL inyeksiyası olduğu deyilir.
Axtarış yerindən ixtiyari bir kataloga daxil oluruq və avtomatik bizim URL-in deyişdiyini görürük.
https://0a5e002603d66b718283ca2e005d00ac.web-security-academy.net/filter?category=Corporate+gifts
Biz artıq sorğunun necə çalışdığını bilirik.
SELECT * FROM products WHERE category = 'Corporate gifts' AND released = 1
Bizə bu sorğu üzərində bəzi dəyişiklər edərək bütün gizli məlumatları tapmaq lazımdır. Corporate gifts
yerinə aşağıdakını yazaraq bütün məlumatları çəkə bilərik.
' or 111=111--
Ümumi sorğu bu şəkildə olacaq:
SELECT * FROM products WHERE category = '' or 111=111--' AND released = 1
Bildiyimiz kimi --
komment sətirləri üçün istifadə istifadə olunur. Ondan sonra gələnləri nəzərə almır.
Və lab həll olundu biz indi bütün gizli məlumatlara baxa bilərik.
Bu lab tapşırığında bizə login səhifəsində SQL zəifliyi olduğu deyilir. Və biz bunu tamamlamaq üçün administrator kimi hesaba daxil olmalıyıq. Login hissəsinə keçid edək.
Buradakı SQLi açığı bizə şifrəsiz hesaba daxil olmağımıza imkan verir.
Ad yerinə administrator' --
yazıb şifrə yerinə heçnə yazmayaraq və ya random bir şeylər yazıb admin hesabına daxil ola bilərik. Buradakı əsas məqam --
olan hissədir. Bildiyimiz kimi --
komment sətirləri üçün istifadə istifadə olunur. Ondan sonra gələnləri nəzərə almır. Yəni şifrə hissəsi -- dən sonra gəldiyi üçün artıq heç bir funksiyası qalmır.
Gördüyümüz kimi lab həll olundu və artıq biz administrator hesabındayıq.
Bu lab-da kategoriya bölməsində Union-based SQL injection olduğu deyilir. Və database Oracle-dır.
Bu açıqdan istifadə etmək üçün ilk öncə orada olan sütünların sayını müəyyən etməliyik. Bunun üçün bu sorğuları URL-də yaza bilərik.
' UNION SELECT NULL FROM DUAL--
' UNION SELECT NULL,NULL FROM DUAL--
Oracle database olduğu üçün DUAL
ilə birlikdə yazmaq lazımdır. Və yuxarıdakı 2 sorğunu yoxladıqda 2ci nin doğru olduğu məlum olur.
Sonra isə bizdən istənilən Oracle database versiyasını müəyyən etməkdir. Bunu öyrənmək üçün belə bir sorğu yaza bilərik: (Database versiyasının müəyyən edilməsi üçün sorğular hər database-ə görə dəyişə bilər)
Və lab tamamlandığını və database haqda müxtəlif məlumatları həmçinin versiyasını görə bilirik.
Bu lab Nümunə 3 ilə eynidir. Ancaq burada versiyanın müəyyən etmək üçün lazım olan sorğu fərqlidir.
Bunlardan istifadə edilə bilər.
Burada bizə database-in Oracle olmadığı deyilir və biz bununla necə formada sorğular yazacağımızı dəqiqləşdiririk.
Bu açıqdan istifadə etmək üçün kategoriyalar hissəsinə keçməli və sütünların sayını müəyyən etməliyik. Bunun üçün bu sorğuları URL-də yaza bilərik.
'union select null,null--
Sütunların sayını müəyyən etdikdən sonra sıra table adını öyrənməkdədir:
'UNION SELECT table_name,NULL FROM information_schema.tables--
Table adınıda tapdıqdan sonra sıra həmin table-da olan sütunların adlarını tapmaqdadır.
'UNION SELECT column_name, NULL FROM information_schema.columns WHERE table_name='users_aokxya'--
Sütunlarında (columns) adını müəyyən etdik. Artıq dataları ələ keçirə bilərik.
' UNION SELECT username_razaer, password_nkkztb FROM users_aokxya--
Və budur. Sistemdə olan istifadəçilər və onların şifrələri. Biz artıq administrator hesabına keçid edə bilərik.