Forum Hafızoğlu
Hoşgeldiniz
Ziyaretçi. Kayıt Ol !


E-Kitaplar- Aşagıda Yer Alan Kitap İsimlerine Tıklayarak Sitemiz Üzerinden Okuyabilirsiniz.

| kitapPeygamberimizin Hayati | kitapSevgili Peygamberim | kitapSiyer-i Nebi | kitapKütübü Sitte | kitapZulmün Tarihi | kitapAdabı Muaşeret | kitapAteizm Ve Eleştirisi|
| kitapKıymetsiz Yazılar | kitapYaşayan Hurafeler | kitapNamaz-Oruç-Haç-Zekat-Kurban... | kitapMuhtasar Osmanlı Tarihi | kitapOsmanlıca-Türkçe Sözlük | kitapİslami Sözlük|
| kitapMübârek Gün Ve Gecelerde Yapılması Tavsiye Edilen Duâ Ve İbâdetler|
| kitapSahabelerin Hayatı | kitapDini Bilgiler | kitapYahudiliğin Gerçek Yüzü | kitapAile Saadeti | kitapElmalılı Tefsiri| | kitapÇocuk Eğitimi|
SQL Enjection 1
Konuyu Değerlendir
  • 18 Oy - 2.78 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5


Konu: 90
Mesaj: 114
Cinsiyet:
Kıdem: May 2006

S.A

arkadaşlar forumda adı çok geçen ama çoğu kişinin tam olarak bilmediği SQL enjeksiyonu hakkında bir kaç bölümden oluşan bir döküman hazırladım. Zamanım olduğu müddetçe geri kalanını yazacağım. Bu ilk kısmı... Devamı da inşallah gelecek. SQL enjeksiyonunu tam olarak öğrendiğinizde artık "phpnuke basit hack" olayına gerek kalmayacak



S1: SQL nedir? Niçin kullanılır?

C1: SQL bir veritabanıdır ve kullanıcıyla etkileşimi sağlayarak, istenilen bilgileri sorgulama türüne göre kullanıcıya sunar. Veritabanlarında tablolar saklanır ve bu tablolarda hakkında bilgi tutulmak istenen şeyler (üye,öğrenci, personel, ürün vs. kayıtları) bulunur. En çok kullanılan veritabanları Microsoft SQL ve Unix MySQL’dir.



S2: SQL’de sorgulama nasıl yapılır?

C2: Normalde veritabanının (SQL veya mySQL) kendi komutlarını kullanarak bir sorgulama yapabilirsiniz. Ancak SQL ya da MySQL kullanan bir siteye doğrudan sorgulama yapamazsınız. Sorgulama işi, bizim web sitesinde gördüğümüz sayfaları oluşturan asp ya da php kodları tarafından yapılır ve bu kodlar webmaster tarafından yazılır. Bir alışveriş sitesinden mesela ASUS marka notebook’ları göstermesini istediğimizde aslında bir sorgulama yapmış oluruz, ancak bu sorgulamayı bizim yerimize asp ya da php kodları yapar.



S3: SQL enjeksiyonu nedir?

C3: SQL enjeksiyonu, veritabanlarının kullanıldığı sitelere kod açıklarından faydalanarak yapılan komut girişleridir.Özellikle Asp ve php ile yapılmış ve kötü olarak tasarlanmış (kod açısından) sitelerde sıkça SQL enjeksiyonu açığına rastlanır.



S4: Her asp ya da php sitesinde bu açık varmıdır? Yoksa nasıl bulacağım bu açığı?

C4: Hayır, her asp ya da php sitesinde bu açık bulunmaz. Çünkü bu açığın temeli webmaster’un kodlarda yaptığı bazı hatalara dayanır.Her webmaster da bu açığa düşmez.Bu açığın bir sitede olup olmadığını öğrenmek için mesela asp ile yapılmış bir sitenin kullanıcı girişinin olduğu herhangi bir alana (kullanıcı ismi, arama alanı vs) ya da URL adresi kısmına ’ (tek tırnak) yazmanız yeterli. Bu sayede SQL’i hata vermeye zorlarsınız. Eğer şuna benzer bir ODBC hatası verirse, o siteye SQL enjeksiyonu yapılabilir:



Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’urunler’ to a column of data type int.

/index.asp, line 11



S5: SQL’i başka nasıl hata vermeye zorlarım ?

C5: Şunlardan birini yazarak:

’ or 1=1--

" or 1=1--

’ or ’a’=’a

or 1=1--

Smiley (26) or (’a’=’a

" or "a"="a



S6: Peki bunları niçin yapıyoruz ve bunlar ne anlama geliyor?

C6: Bunları SQL’in normal kullanıcıya sunmadığı bilgileri önümüze sermesi için yapıyoruz. Bu sayede SQL hata veriyor ve biz de bu hatadaki bilgiler yardımıyla sisteme kod enjekte ediyoruz. Mesela ’ or 1=1-- şeklindeki bir ifadeyi kullanıcı girişinin olduğu herhangi bir alana yazdığımız zaman, SQL’e diyoruz ki: Giriş şartı ya hiçbirşeydir ya da 1=1 olduğu zaman geçerlidir. 1 her zaman 1’e eşit olduğuna göre, SQL bizim feykimiz yemiş oluyor, yukarıdaki gibi bir hata veriyor. Bu hata sayesinde biz de adını bilmediğimiz tablonun ne olduğunu öğreniyor ve ona göre yeni komut vererek amacımıza ulaşıyoruz.



S7: Olay biraz karıştı. Bir örnekle açıklasak şunu?

C7: Ok, SQL’de normalde bir sorgulama şu şekilde yapılır. MEsela bizim ürünler diye bir tablomuz olsun ve bu tabloda web sitesinde sattığımız kitaplarımız, telefonlarımız vb gibi ürünlerimiz olsun . Normalde SQL’deki "urunler" adlı bu tablodan "kitaplar" başlıklı tablonun hepsini seçmek istediğimizde şöyle çağırırız:



SELECT * FROM urunler WHERE urunID=’kitaplar’



Ancak biz bunun yerine şu ifadeyi kullanalım:



SELECT * FROM urunler WHERE urunID=’’ or 1=1--’



Şimdi en sağa dikkat edin, buraya ’ or 1=1--’ kod enjeksiyonu yaptık ve SQL’e "urunler tablosundan bana urunID’si boş olan (en baştaki tırnaklara dikkat edin) ya da 1=1 eşitliğinin sağlandığı tabloyu getir" dedik. Böylece adını hiç bilmediğimiz tabloların ismini öğrenmiş olacağız.
Kavuşmak ölümse,Hasretin zulüm
Elbet kavusuruz beKle güLümTek sana Aittir Şu kanayan Gönlüm.
BEn yolumu Çoktan çizdim;
Ya Sen ,yada ÖLÜM..!!
NO FEAR

Alıntı
.


Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi

Türkçe Çeviri : MyBB Türkiye
MyBB, © 2002-2024 MyBB Group.