- 20 Eyl 2021
- 2,539
- 692
- 24
Merhabalar SQL açığı nasıl kapatılır SQL açığı nı detaylı anlatabilirmisiniz anlatan herkese teşekkür ediyorum iyi günler .
sql açığı en basit yöntemi ile genelde sayfaların url parametrelerinde ki değerlere müdahale edilerek uygulanan bir olaydır. profil.php?uye=TURKHACKER2009 u ele alalım.Merhabalar SQL açığı nasıl kapatılır SQL açığı nı detaylı anlatabilirmisiniz anlatan herkese teşekkür ediyorum iyi günler .
SELECT * FROM `hesaplar` where kullanicilar = 'TURKHACKER20019' or kullanicilar like '%admin%'
$sql = "SELECT * FROM `hesaplar` where kullanicilar = {$_GET['uye']}";
if(isset($_GET["uye"])){
$uye = htmlspecialchars($_GET["uye"]);
if(is_string($uye)){
if(strlen($uye) <= 10){
$sql = "SELECT * FROM `hesaplar` where kullanicilar = $uye";
}
}
}
Mesela ben bir sitede SQL açığı buldum bu SQL açığını bildiricem adamlara bunları yapmasını mı önermeliyim öyle anlatırsan benim için daha iyi olur ben o kısmı merak ediyorum.sql açığı en basit yöntemi ile genelde sayfaların url parametrelerinde ki değerlere müdahale edilerek uygulanan bir olaydır. profil.php?uye=TURKHACKER2009 u ele alalım.
diyelim ki böyle bir link var ve açık mevcut, şöylebir müdahalede bulunduğumuzu varsayarsak profil.php?uye=TURKHACKER20019 or kullanicilar like '%admin%'
SQL:SELECT * FROM `hesaplar` where kullanicilar = 'TURKHACKER20019' or kullanicilar like '%admin%'
kullanıcı adını kasten hatalı girdim ki, aradığımız değerde kullanıcı varsa onu getirsin. yani sql sorgusu değişmiş olacağı için admin kullanıcısı ile alakalı bir sutün olup olmadığına bakacak sayfa. tabi biz bu örnekte bir çok aşamayı es geçmiş olduk, örneğin öncesinde database bilgilerini daha sonrasında kolon bilgilerini almamız gerekirdi ama, mantığını anlaman için doğrudan sonuç odaklı yazdım. genelde (php için konuşuyorum) mysql bağlantısı kurarak veritabanına bağlanan yapılarda açık olma olasılığı daha yüksek oluyor, bunun arkasından mysqli geliyor, pdo ile kurulan bağlantılar bir miktar daha güvenli olmasına rağmen, sql için yapılan sorgularda kullanılan değişkenler için koşul yazılmaması da çok büyük tehlike oluşturuyor.
böyle bir kullanım, url'de yazılacak herhangi bir komutun veritabanında çalışmasını sağlayacaktır. çünkü hiçbir ön koşul aramıyoruz, uye değeri olsun yeter diyoruz.PHP:$sql = "SELECT * FROM `hesaplar` where kullanicilar = {$_GET['uye']}";
ancak böyle bir kullanımda, uye anahtarı ile get değeri var mı, varsa bu değeri özel ifadelerden temizleyelim, temizlendiyse ve bu değer string ise, bu değer 10 karakter veya daha az karakterden oluşması durumunda bu koşul çalışır. aksi taktirde else kısmına vereceğin exit fonksiyonu ile komut çalışmayacaktır.PHP:if(isset($_GET["uye"])){ $uye = htmlspecialchars($_GET["uye"]); if(is_string($uye)){ if(strlen($uye) <= 10){ $sql = "SELECT * FROM `hesaplar` where kullanicilar = $uye"; } } }
açığın olduğuna dair bir kanıt sunabiliyor olman yeterli, açığı nasıl düzeltecekleri onların sorunu. ayrıca zaten nasıl izah edeceğini izah ettim.Mesela ben bir sitede SQL açığı buldum bu SQL açığını bildiricem adamlara bunları yapmasını mı önermeliyim öyle anlatırsan benim için daha iyi olur ben o kısmı merak ediyorum.
Mesela bug bounty gibi yerlerde açığı kapatarak para kazanılıyor bende hacklediğim sitenin açığını kapatırım diye düşündüm araştırmaya başladım nasıl kapatırım diye burayada yazdım sizde benim demek istediğimi anlamışsınızdır heraldeaçığın olduğuna dair bir kanıt sunabiliyor olman yeterli, açığı nasıl düzeltecekleri onların sorunu. ayrıca zaten nasıl izah edeceğini izah ettim.
Kapatmak için başka kişi bulacaklarına onuda ben halledeyim bana düşenide alırım zatenaçığın olduğuna dair bir kanıt sunabiliyor olman yeterli, açığı nasıl düzeltecekleri onların sorunu. ayrıca zaten nasıl izah edeceğini izah ettim.
O yüzden öğrenmeye çalışıyorumaçığın olduğuna dair bir kanıt sunabiliyor olman yeterli, açığı nasıl düzeltecekleri onların sorunu. ayrıca zaten nasıl izah edeceğini izah ettim.
Mesela bug bounty gibi yerlerde açığı kapatarak para kazanılıyor bende hacklediğim sitenin açığını kapatırım diye düşündüm araştırmaya başladım nasıl kapatırım diye burayada yazdım sizde benim demek istediğimi anlamışsınızdır heralde
Kapatmak için başka kişi bulacaklarına onuda ben halledeyim bana düşenide alırım zaten
O yüzden öğrenmeye çalışıyorum
Çok açıklayıcı bir yazı. Tebrik ederim.sql açığı en basit yöntemi ile genelde sayfaların url parametrelerinde ki değerlere müdahale edilerek uygulanan bir olaydır. profil.php?uye=TURKHACKER2009 u ele alalım.
diyelim ki böyle bir link var ve açık mevcut, şöylebir müdahalede bulunduğumuzu varsayarsak profil.php?uye=TURKHACKER20019 or kullanicilar like '%admin%'
SQL:SELECT * FROM `hesaplar` where kullanicilar = 'TURKHACKER20019' or kullanicilar like '%admin%'
kullanıcı adını kasten hatalı girdim ki, aradığımız değerde kullanıcı varsa onu getirsin. yani sql sorgusu değişmiş olacağı için admin kullanıcısı ile alakalı bir sutün olup olmadığına bakacak sayfa. tabi biz bu örnekte bir çok aşamayı es geçmiş olduk, örneğin öncesinde database bilgilerini daha sonrasında kolon bilgilerini almamız gerekirdi ama, mantığını anlaman için doğrudan sonuç odaklı yazdım. genelde (php için konuşuyorum) mysql bağlantısı kurarak veritabanına bağlanan yapılarda açık olma olasılığı daha yüksek oluyor, bunun arkasından mysqli geliyor, pdo ile kurulan bağlantılar bir miktar daha güvenli olmasına rağmen, sql için yapılan sorgularda kullanılan değişkenler için koşul yazılmaması da çok büyük tehlike oluşturuyor.
böyle bir kullanım, url'de yazılacak herhangi bir komutun veritabanında çalışmasını sağlayacaktır. çünkü hiçbir ön koşul aramıyoruz, uye değeri olsun yeter diyoruz.PHP:$sql = "SELECT * FROM `hesaplar` where kullanicilar = {$_GET['uye']}";
ancak böyle bir kullanımda, uye anahtarı ile get değeri var mı, varsa bu değeri özel ifadelerden temizleyelim, temizlendiyse ve bu değer string ise, bu değer 10 karakter veya daha az karakterden oluşması durumunda bu koşul çalışır. aksi taktirde else kısmına vereceğin exit fonksiyonu ile komut çalışmayacaktır.PHP:if(isset($_GET["uye"])){ $uye = htmlspecialchars($_GET["uye"]); if(is_string($uye)){ if(strlen($uye) <= 10){ $sql = "SELECT * FROM `hesaplar` where kullanicilar = $uye"; } } }
Katılıyor ve ekliyorum. Bazen insana dert bile oluyor bunlar.kardeşim bu işi açığı bulana yaptırmaz bug bounty sunan şirketler, sen açığı bulur bildirirsin ödülünü alırsın. mantığını anlattım, yetmedi kodlayarak anlattım. program dili bilmiyorsan, nasıl yapacaksın bu işi? git dil öğren. ayrıca küçük siteler ödül vermez, teşekkür bile etmezler hatta. bu yüzden çokta heves etme bu tarz işlere, bulduğun açıklı sitelerin %99.9999999999999'u sana yanıt bile vermiyor olacak çünkü. yani para için kovalanacak iş değil. hobi olarak yap yapacaksan.
ya ben telefon ile arayıp bildirdiğimi biliyorum, bir saniye diyip yüzüme kapattılarKatılıyor ve ekliyorum. Bazen insana dert bile oluyor bunlar.
Benim kendi yaptığım bir sitem ve ya bildiğim bir dilim olsa anlarım zaten senin yazılarını reiskardeşim bu işi açığı bulana yaptırmaz bug bounty sunan şirketler, sen açığı bulur bildirirsin ödülünü alırsın. mantığını anlattım, yetmedi kodlayarak anlattım. program dili bilmiyorsan, nasıl yapacaksın bu işi? git dil öğren. ayrıca küçük siteler ödül vermez, teşekkür bile etmezler hatta. bu yüzden çokta heves etme bu tarz işlere, bulduğun açıklı sitelerin %99.9999999999999'u sana yanıt bile vermiyor olacak çünkü. yani para için kovalanacak iş değil. hobi olarak yap yapacaksan.
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.