Ekim 18, 2021
11 11 11 ÖÖ
TCP nedir ? Aktarım Katmanı 2
Aktarım Katmanı Tcp Nedir
Yönlendirme Nedir 2 ?
Yönlendirme Nedir ?
Ağ Katmanı Nedir 2 ?
Ağ Katmanı Nedir ?
Veri Bağı Katmanı Nedir 2 ?
Android Studio Nasıl Kurulur ?
Veri Bağı Katmanı Nedir ?
Fiziksel Katman Nedir ?
Son Yazılar
TCP nedir ? Aktarım Katmanı 2 Aktarım Katmanı Tcp Nedir Yönlendirme Nedir 2 ? Yönlendirme Nedir ? Ağ Katmanı Nedir 2 ? Ağ Katmanı Nedir ? Veri Bağı Katmanı Nedir 2 ? Android Studio Nasıl Kurulur ? Veri Bağı Katmanı Nedir ? Fiziksel Katman Nedir ?
dvwa walkthrough

SQL INJECTION (Low Level)

Paylaşım , Takip İçin

Sql injection nedir ? 

SQL Injection, bir web uygulamasına bağlı girilecek input verisi aracılığıyla sunucudaki var olan SQL sorgusuna yeni SQL sorgusu eklemesine, diğer anlamıyla yani isminden de anlaşılacağı üzere enjekte etmesine denir. SQL Injection ile hedef sitenin önemli verilerine erişilebilir, hedef sitenin veritabanı değiştirilebilir ve Sql injection ile sayfa da hack’lenebilmektedir.

Sql injection , command injection ‘ a benzer şekildedir . Fakat farklı olarak bu sefer komut operatörleri yerine ( & | ; ) Sql sorguları kullanılacaktır.

Kodda gördüğümüz 

SELECT first_name, last_name FROM users WHERE user_id = ‘$id’;

Kısmı bizim girilen değerimizin okunduğu kısımdır 1 değerini girersek ‘$id’ yerine ‘1’ ibaresi gelecektir.

Bizim zafiyetimiz ise ‘ işareti ile sorgumuzun hata vermesini yani kodumuzdaki WHERE kısmını tırnakla kapatıp diğer kısmın kapanmayıp devam etmesini sağlamasıdır.

 

Kolon sayısı

Özgün sorgudan döndürülen kolon sayısını belirlemek için iki etkili yöntem vardır.

İlk yöntem, ORDER BY yan tümceleri bir dizi enjekte ve bir hata oluşana kadar belirtilen sütun dizini artırma içerir.

Örneğin, enjeksiyon noktasının orijinal sorgunun WHERE yan tümcesinde alıntılanan bir dize olduğunu varsayarsak, ORDER BY komutlarını gönderirsiniz:

‘ ORDER BY 3# 

Yazdığımız zaman bize hata veriyor. Yani buradan anlayabiliriz ki kolon sayısı 3 değil 2 ‘imiş .

Kolon sayısını bulmamızın nedeni UNION komutunu kullanmak içindir. UNION SELECT kullanılırken kolon sayılarının aynı olması gerekir.

Versiyon

  • version() : MySQL versiyonu hakkında bilgi verir.

 

  • database() : Veritabanı’nın veriyi aldığı database ismi hakkında bilgi verir.

 

  • user() : Veri tabanı kullanıcısı hakkında bilgi verir.

Biz sadece versiyon bilgisini göstereceğiz. Fakat version kısmı yerine database,user yazarak da bu kodlar kullanılabilir.

1′ or ‘1’ = ‘1’ union select version(),1#

‘ union all select@@version,user()#

Bilgi Alma

‘ UNION SELECT username, password FROM users# 

yazdığımız zaman karşımıza çıkan ekran bu oluyor . 

‘ UNION SELECT user, password FROM users# 

username tablosu bulunamadı bu yüzden user tablosunu arayalım.

 

Sonrasında hash verimizi bulduktan sonra hangi şifreleme modeli olduğuna bakıyoruz sonrasında o modele göre şifremizi kırıp buluyoruz.

Yukardakileri barındırdığı için 1 tanesi ile kırabiliyor olacağız. Kırabilmemiz için ilk önce hashid sini bir metin belgesine kaydedip ben sql adı altında kaydettim kaydedip hashcat ile kırıyoruz. John ilede kırabiliriz fakat biraz uzun süreceği için hashcat tercih ediyoruz.

Görüldüğü üzere kullanıcı adı admin olan hesabın şifresi passwd şeklinde bulmuş oluyoruz . 


Paylaşım , Takip İçin
0 0 votes
Article Rating

Bir Cevap Yazın

0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
HAYALİNDEKİ YAZILIM
%d blogcu bunu beğendi: