Ana Sayfa
Ana Sayfa Forumlar Dosyalar Dersler iletisim
 
   Kategoriler
ACPI [0]
Action Script [5]
Ajax [7]
ASP [12]
ASP.NET [23]
Assembly [3]
Bash [1]
C [4]
C# [9]
C++ [10]
Cobol [1]
Delphi [31]
Flash [5]
Html [9]
JAVA [36]
Java Script [12]
JSF [2]
Jsp [6]
Lua [1]
Matlab [2]
MySQL [30]
Oracle [1]
Pascal [31]
Perl [4]
Photoshop [2]
PHP [156]
Python [8]
REXX [6]
Ruby [1]
SEO [5]
Visual Basic [37]
C# / Injection Flaws
Injection Flaws
Yazar: by_Coder
Eklenme: 25/01/08    Okunma: 261    
 
 

Dinamik SQL sorgularının kullanıldığı sistemlerde oluşabilecek bir açıktır.


Bir kullanıcı adı parola sınaması yapılan SQL cümleciğinde kullanılabilir.


Select MemberID
From Member
Where Username = '" + txtUsername.Text + "' and Password = '" + txtPassword.Text + "'"


Şeklinde bir SQL cümlesinin kullanıldığı bir sistemde aşağıdaki ifadeleri girelim


txtUsername.Text : ' or 1=1 --
txtPassword.Text : 123


ifadesi aşağıdaki SQL cümlesinin çalıştırılmasını sağlar


Select MemberID
From Member
Where Username = '' or 1=1 -- ' and Password = '" + txtPassword.Text + "'"

-- ifadesi SQL Server için yorum satırı anlamına geldi için çalıştırılmaz.


Where ifadesini inceleyelim :


Username = '' false döner, 1 = 1 ise true. Or karşılaştırmasında ise False or True’nun sonucu true’dur. Dolayısıyla doğru kullanıcı adı parola girilmese dahi geriye tüm kayıtlar döner ve saldırgan ilk kaydın yetkisi ile içeriye giriş yapmış olur.


Saldırgan “SQL Injection” yöntemi ile veritabanı hakkında daha detaylı bilgi edinebilir. SQL Server üzerinde System Administrator hesabı açabilir, Tüm Tabloların listesini ve bu tabolardaki bilgilere ulaşabilir. Hatta web uygulaması sa yetkisine sahip bir kullanıcı ile çalıştırılıyorsa xp_cmdshell ‘format C:’ ile sisteme format bile atabilir.



Dinamik SQL sorgularındaki bu içeri sızmaları engellemenin yolu parametre kullanmaktır.


Bunu SqlCommand nesnesine SqlParameter tipinde parametre ekleyerek yapabiliriz. 


SqlConnection conn = new SqlConnection();
conn.ConnectionString = "[ ConnectionString ]";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = " Select MemberID"
+ " From Member"
+ " Where Username = @username and Password = @password";
cmd.Parameters.AddWithValue("@username",txtUsername.Text);
cmd.Parameters.AddWithValue ("@password",txtPassword.Text);
conn.Open();
int MembetID = Convert.ToInst32(cmd.ExecuteScalar());
conn.Close();

Bu şekilde kullandığımız dinamik SQL sorgularında Injection yönetimini bertaraf etmiş oluruz.


 


Kaynaklar



http://www.owasp.org/index.php/Top_10_2007-A2
http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf
http://www.mutasyon.net/makaleoku.asp?id=728


 




Taglar: Bilgi Sizdirma ve Uygunsuz Hata Yonetimi Csharp ile Windows Programlama 4 - Pencrele Ozellikleri Csharp ile Windows Programlama 5 - Pencrele Ozellikleri Csharp Ile Windows Programlama 1 Csharp Ile Windows Programlama 2 - Window Classes Csharp Ile Windows Programlama 3 - Pencreler Dsofile ile Office Belgelerinin Ozelliklerini Duzenlemek Injection Flaws Kotu Niyetli Dosya Calistirma

Isminiz:
E-mail adresiniz:
Güvenlik Kodu:
  
 

 

   Görsel Dersler
Asp [59]
Asp.Net [5]
Csharp [33]
Delphi [85]
Delphi 7 [0]
Dreamweaver [45]
DW ile ASP Uygulamaları [28]
English Lessons [52]
Fireworks [4]
Flash [16]
HTML [20]
Java Script [0]
MS Access [19]
MS FrontPage [11]
Photoshop [32]
PHP [99]
Python [3]
SolidWorks [25]
Think Design [26]
VB Script [32]
Vb.Net [37]
Visual Basic [4]
   Giriş Yap
Kullanici Adi

Sifre

Üye Ol
   Dosyalar
WestByte SeaWar
Google Talk
Graphic Converter 2003
ShowImg
Zen Puzzle Garden
Maxthon (MyIE2) Türkçe Yama
Awicons Standart
AKINSOFT Kurs Otomasyonu
AKINSOFT AsPing
DVD Santa
   Duyurular
Duyuru1
Duyuru2
   Haberler
Haber1
Haber2
Ana Sayfa Php Nuke Resmi Web Sitesi
Php Nuke Tema Tasarim Sitesi Php Nuke Tema Tasarim Sitesi
Ana Sayfa Forumlar Dosyalar Hesabiniz iletisim
Tema Tasarim : Halil Ibrahim Kalkan webmaster forumu Web Stats