HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!
Merhaba,
Bazı Oyunlar WMCP Admin Paneli Kullanmakta.
WMCP Paneli Kullanan Arkadaşlar Silmesini Tavsiye Ediyorum.
Web Meric Yeni Bir Güvenlikle İlgili Bir güncelleme Getirmediği Sürece Yüklemeyin.
Sebebi ise
/market
/WM_admin
Kısımlarında SQL İnject Rahatlıkla Giriyor.
'=''OR'
'=''OR'
Olarak Rahatlıkla Girilebiliyor.
Ya Filtreleme Getirecek Yada Query Olarak Giriş Yaptırmayacak İf Else Kullanıp Sorgu Yaptırıcak Tekrardan.
Bu O Arkadaşa Kalmış
Filtreleme Nasıl Yapılır Onuda Kısa Bir Özet Geçeyim.
1.Yol :
Site geneline dahil ettiğimiz bir connection.php,config.php veya veritabanı bağlantısı için kullandığımız bir bağlantı dosyamız mevcuttur. Bu dosyanın içinde aşağıdaki kodları ekleyerek get methodumuza gelecek select insert gibi sorguları filtreleyebiliriz.
2. yolumuz ise şöyle;
Aşağıdaki kodu kullanarak get ve posttan gelen verileri temizleyebilirsiniz. Ama bu şekilde kullanırsanız göndermek istediğiniz zararsız verilerden bazılarınıda temizleyebilir
3. olarak bahsetmek istediğim yol gelen verileri yine kontrol ederek. Örneği gelen sayfa idsi INT mi ?
erhangi üyenin detaylarını gösteren bir sayfa düşünün;
x.php?uyeid=1 ( Bu adres 1 nolu uyenin bilgilerini gostersin )
Eminim birçoğunuz zaten yukarıdaki kodun yeterince güvenli olduğunu düşünüyorsunuz fakat değil.Mysql 4.x ile birlikte mySQL union select destegi vermeye başladı.
Saldırganın tekinin ?id=-1 UNION SELECT 0,uye,parola FROM uye olarak istek yaptığını düşünsenize..Birinci asıl select sorgusu herhangi bir sonuç döndürmeyeceği için dönen sonuclar saldırganın girdigi union select içindeki alanlar olacaktır.
Dikkatinizi çektiyse tırnak kullanmadan böyle bir saldırı yapılabiliyor, dolayısıyla bu nokta dikkat edilmesi gereken bu tip id tarzı bilgileri sorguya alırken veri tipini kontrol etmek.
Bunu (int)$degisken veya intval($degisken); seklinde yapabilirsiniz.Ya da is_integer, is_numeric gibi fonksiyonlarla kontrol edip gerekli manual try/catch mekanizmasını kurabilirsiniz.
Ya da bu tür değerleri tırnak içine alarak saldırganın işi zorlaştırılabilir.(where id = $id gibi) Zira, bu durumda saldırgan union select sorguları sokabilmek için ilk önce ilk SELECT sorgusunu bitirmek zorunda kalacak ve UNION SELECT yazmadan önce karakterini yazacak.Fakat mysql_real_escape_string burda devreye girip karakterini escape edeceği için olası saldırılar geçersiz hale gelir.
Yani daha güvenli bir kod aşağıdaki gibi olacak;
Taha Mumcu...
Er0in412 Saygılarla.
Bazı Oyunlar WMCP Admin Paneli Kullanmakta.
WMCP Paneli Kullanan Arkadaşlar Silmesini Tavsiye Ediyorum.
Web Meric Yeni Bir Güvenlikle İlgili Bir güncelleme Getirmediği Sürece Yüklemeyin.
Sebebi ise
/market
/WM_admin
Kısımlarında SQL İnject Rahatlıkla Giriyor.
'=''OR'
'=''OR'
Olarak Rahatlıkla Girilebiliyor.
Ya Filtreleme Getirecek Yada Query Olarak Giriş Yaptırmayacak İf Else Kullanıp Sorgu Yaptırıcak Tekrardan.
Bu O Arkadaşa Kalmış
Filtreleme Nasıl Yapılır Onuda Kısa Bir Özet Geçeyim.
1.Yol :
Site geneline dahil ettiğimiz bir connection.php,config.php veya veritabanı bağlantısı için kullandığımız bir bağlantı dosyamız mevcuttur. Bu dosyanın içinde aşağıdaki kodları ekleyerek get methodumuza gelecek select insert gibi sorguları filtreleyebiliriz.
Kod:
[COLOR=#000088][FONT=Verdana]$inj[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#339933][FONT=Verdana]=[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#990000][FONT=Verdana]array[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#009900][FONT=Verdana]([/FONT][/COLOR][COLOR=#110000][FONT=Verdana]select[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] insert[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] delete[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] update[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] drop table[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] union[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#009900][FONT=Verdana][B]null[/B][/FONT][/COLOR][COLOR=#110000][FONT=Verdana][/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] SELECT[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] INSERT[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] DELETE[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] UPDATE[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] DROP TABLE[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] UNION[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#009900][FONT=Verdana][B]NULL[/B][/FONT][/COLOR][COLOR=#110000][FONT=Verdana][/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana]order by[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana]order by[/FONT][/COLOR][COLOR=#009900][FONT=Verdana])[/FONT][/COLOR][COLOR=#339933][FONT=Verdana];[/FONT][/COLOR][/FONT][/COLOR]
[COLOR=#B1B100]for[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#000088]$i[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#000088]$i[/COLOR] [COLOR=#339933]<[/COLOR] [COLOR=#990000]sizeof[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#000088]$_GET[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#339933]++[/COLOR][COLOR=#000088]$i[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
[COLOR=#B1B100]for[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#000088]$j[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#000088]$j[/COLOR] [COLOR=#339933]<[/COLOR] [COLOR=#990000]sizeof[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#000088]$inj[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#339933]++[/COLOR][COLOR=#000088]$j[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
[COLOR=#B1B100]foreach[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$_GET[/COLOR] [COLOR=#B1B100]as[/COLOR] [COLOR=#000088]$gets[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
[COLOR=#B1B100]if[/COLOR][COLOR=#009900]([/COLOR][COLOR=#990000]preg_match[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#339933]/[/COLOR] [COLOR=#339933].[/COLOR] [COLOR=#000088]$inj[/COLOR][COLOR=#009900][[/COLOR][COLOR=#000088]$j[/COLOR][COLOR=#009900]][/COLOR] [COLOR=#339933].[/COLOR] [COLOR=#339933]/[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$gets[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
[COLOR=#000088]$temp[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]key[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#000088]$_GET[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000088]$_GET[/COLOR][COLOR=#009900][[/COLOR][COLOR=#000088]$temp[/COLOR][COLOR=#009900]][/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#339933];[/COLOR]
[COLOR=#990000]exit[/COLOR][COLOR=#009900]([/COLOR][COLOR=#339933]<[/COLOR]iframe title[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"YouTube video player"[/COLOR] width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"800"[/COLOR] height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"600"[/COLOR] src[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"https://www.youtube.com/watch?v=_bfDT2RA7r0"[/COLOR] frameborder[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"0"[/COLOR] allowfullscreen[COLOR=#339933]></[/COLOR]iframe[COLOR=#339933]>[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#B1B100]continue[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR] [COLOR=#191919][FONT=Arial][COLOR=#009900][FONT=Verdana]}[/FONT][/COLOR]
2. yolumuz ise şöyle;
Aşağıdaki kodu kullanarak get ve posttan gelen verileri temizleyebilirsiniz. Ama bu şekilde kullanırsanız göndermek istediğiniz zararsız verilerden bazılarınıda temizleyebilir

Kod:
[COLOR=#000088][FONT=Verdana]$injectcheck[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#339933][FONT=Verdana]=[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#990000][FONT=Verdana]preg_replace[/FONT][/COLOR][COLOR=#009900][FONT=Verdana]([/FONT][/COLOR][COLOR=#0000FF][FONT=Verdana]"[^À-ÿa-zA-Z0-9[COLOR=#000099][B]\\[/B][/COLOR]\-\.\,\:\s[COLOR=#000099][B]\r[/B][/COLOR][COLOR=#000099][B]\t[/B][/COLOR][COLOR=#000099][B]\n[/B][/COLOR] ]"[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#0000FF][FONT=Verdana]''[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#000088][FONT=Verdana]$injectcheck[/FONT][/COLOR][COLOR=#009900][FONT=Verdana])[/FONT][/COLOR][COLOR=#339933][FONT=Verdana];[/FONT][/COLOR]
3. olarak bahsetmek istediğim yol gelen verileri yine kontrol ederek. Örneği gelen sayfa idsi INT mi ?
erhangi üyenin detaylarını gösteren bir sayfa düşünün;
x.php?uyeid=1 ( Bu adres 1 nolu uyenin bilgilerini gostersin )
Kod:
[COLOR=#000088][FONT=Verdana]$id[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#339933][FONT=Verdana]=[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#990000][FONT=Verdana]mysql_real_escape_string[/FONT][/COLOR][COLOR=#009900][FONT=Verdana]([/FONT][/COLOR][COLOR=#000088][FONT=Verdana]$id[/FONT][/COLOR][COLOR=#009900][FONT=Verdana])[/FONT][/COLOR][COLOR=#339933][FONT=Verdana];[/FONT][/COLOR][/FONT][/COLOR]
[COLOR=#191919][FONT=Arial][COLOR=#000088][FONT=Verdana]$sorgu[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#339933][FONT=Verdana]=[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#0000FF][FONT=Verdana]"SELECT isim,soyad,bla,bla FROM uyeler WHERE id = [COLOR=#006699][B]$_GET[id][/B][/COLOR]"[/FONT][/COLOR][COLOR=#339933][FONT=Verdana];[/FONT][/COLOR]
Eminim birçoğunuz zaten yukarıdaki kodun yeterince güvenli olduğunu düşünüyorsunuz fakat değil.Mysql 4.x ile birlikte mySQL union select destegi vermeye başladı.
Saldırganın tekinin ?id=-1 UNION SELECT 0,uye,parola FROM uye olarak istek yaptığını düşünsenize..Birinci asıl select sorgusu herhangi bir sonuç döndürmeyeceği için dönen sonuclar saldırganın girdigi union select içindeki alanlar olacaktır.
Dikkatinizi çektiyse tırnak kullanmadan böyle bir saldırı yapılabiliyor, dolayısıyla bu nokta dikkat edilmesi gereken bu tip id tarzı bilgileri sorguya alırken veri tipini kontrol etmek.
Bunu (int)$degisken veya intval($degisken); seklinde yapabilirsiniz.Ya da is_integer, is_numeric gibi fonksiyonlarla kontrol edip gerekli manual try/catch mekanizmasını kurabilirsiniz.
Ya da bu tür değerleri tırnak içine alarak saldırganın işi zorlaştırılabilir.(where id = $id gibi) Zira, bu durumda saldırgan union select sorguları sokabilmek için ilk önce ilk SELECT sorgusunu bitirmek zorunda kalacak ve UNION SELECT yazmadan önce karakterini yazacak.Fakat mysql_real_escape_string burda devreye girip karakterini escape edeceği için olası saldırılar geçersiz hale gelir.
Yani daha güvenli bir kod aşağıdaki gibi olacak;
Kod:
[COLOR=#000088][FONT=Verdana]$id[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#339933][FONT=Verdana]=[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#990000][FONT=Verdana]intval[/FONT][/COLOR][COLOR=#009900][FONT=Verdana]([/FONT][/COLOR][COLOR=#000088][FONT=Verdana]$_GET[/FONT][/COLOR][COLOR=#009900][FONT=Verdana][[/FONT][/COLOR][COLOR=#0000FF][FONT=Verdana]"id"[/FONT][/COLOR][COLOR=#009900][FONT=Verdana]][/FONT][/COLOR][COLOR=#009900][FONT=Verdana])[/FONT][/COLOR][COLOR=#339933][FONT=Verdana];[/FONT][/COLOR][/FONT][/COLOR]
[COLOR=#191919][FONT=Arial][COLOR=#000088][FONT=Verdana]$sorgu[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#339933][FONT=Verdana]=[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#0000FF][FONT=Verdana]"SELECT * FROM uyeler WHERE id = "[/FONT][/COLOR][COLOR=#000088][FONT=Verdana]$id[/FONT][/COLOR][COLOR=#0000FF][FONT=Verdana]" "[/FONT][/COLOR][COLOR=#339933][FONT=Verdana];[/FONT][/COLOR]
Taha Mumcu...
Er0in412 Saygılarla.
Merhaba,
Bazı Oyunlar WMCP Admin Paneli Kullanmakta.
WMCP Paneli Kullanan Arkadaşlar Silmesini Tavsiye Ediyorum.
Web Meric Yeni Bir Güvenlikle İlgili Bir güncelleme Getirmediği Sürece Yüklemeyin.
Sebebi ise
/market
/WM_admin
Kısımlarında SQL İnject Rahatlıkla Giriyor.
'=''OR'
'=''OR'
Olarak Rahatlıkla Girilebiliyor.
Ya Filtreleme Getirecek Yada Query Olarak Giriş Yaptırmayacak İf Else Kullanıp Sorgu Yaptırıcak Tekrardan.
Bu O Arkadaşa Kalmış
Filtreleme Nasıl Yapılır Onuda Kısa Bir Özet Geçeyim.
1.Yol :
Site geneline dahil ettiğimiz bir connection.php,config.php veya veritabanı bağlantısı için kullandığımız bir bağlantı dosyamız mevcuttur. Bu dosyanın içinde aşağıdaki kodları ekleyerek get methodumuza gelecek select insert gibi sorguları filtreleyebiliriz.
Kod:[COLOR=#000088][FONT=Verdana]$inj[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#339933][FONT=Verdana]=[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#990000][FONT=Verdana]array[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#009900][FONT=Verdana]([/FONT][/COLOR][COLOR=#110000][FONT=Verdana]select[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] insert[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] delete[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] update[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] drop table[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] union[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#009900][FONT=Verdana][B]null[/B][/FONT][/COLOR][COLOR=#110000][FONT=Verdana][/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] SELECT[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] INSERT[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] DELETE[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] UPDATE[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] DROP TABLE[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] UNION[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#009900][FONT=Verdana][B]NULL[/B][/FONT][/COLOR][COLOR=#110000][FONT=Verdana][/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana]order by[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#110000][FONT=Verdana]order by[/FONT][/COLOR][COLOR=#009900][FONT=Verdana])[/FONT][/COLOR][COLOR=#339933][FONT=Verdana];[/FONT][/COLOR][/FONT][/COLOR] [COLOR=#B1B100]for[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#000088]$i[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#000088]$i[/COLOR] [COLOR=#339933]<[/COLOR] [COLOR=#990000]sizeof[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#000088]$_GET[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#339933]++[/COLOR][COLOR=#000088]$i[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR] [COLOR=#B1B100]for[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#000088]$j[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#000088]$j[/COLOR] [COLOR=#339933]<[/COLOR] [COLOR=#990000]sizeof[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#000088]$inj[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#339933]++[/COLOR][COLOR=#000088]$j[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR] [COLOR=#B1B100]foreach[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$_GET[/COLOR] [COLOR=#B1B100]as[/COLOR] [COLOR=#000088]$gets[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR] [COLOR=#B1B100]if[/COLOR][COLOR=#009900]([/COLOR][COLOR=#990000]preg_match[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#339933]/[/COLOR] [COLOR=#339933].[/COLOR] [COLOR=#000088]$inj[/COLOR][COLOR=#009900][[/COLOR][COLOR=#000088]$j[/COLOR][COLOR=#009900]][/COLOR] [COLOR=#339933].[/COLOR] [COLOR=#339933]/[/COLOR][COLOR=#339933],[/COLOR] [COLOR=#000088]$gets[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR] [COLOR=#000088]$temp[/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#990000]key[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#000088]$_GET[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#000088]$_GET[/COLOR][COLOR=#009900][[/COLOR][COLOR=#000088]$temp[/COLOR][COLOR=#009900]][/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#339933];[/COLOR] [COLOR=#990000]exit[/COLOR][COLOR=#009900]([/COLOR][COLOR=#339933]<[/COLOR]iframe title[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"YouTube video player"[/COLOR] width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"800"[/COLOR] height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"600"[/COLOR] src[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"https://www.youtube.com/watch?v=_bfDT2RA7r0"[/COLOR] frameborder[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"0"[/COLOR] allowfullscreen[COLOR=#339933]></[/COLOR]iframe[COLOR=#339933]>[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#B1B100]continue[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#009900]}[/COLOR] [COLOR=#009900]}[/COLOR] [COLOR=#009900]}[/COLOR] [COLOR=#191919][FONT=Arial][COLOR=#009900][FONT=Verdana]}[/FONT][/COLOR]
2. yolumuz ise şöyle;
Aşağıdaki kodu kullanarak get ve posttan gelen verileri temizleyebilirsiniz. Ama bu şekilde kullanırsanız göndermek istediğiniz zararsız verilerden bazılarınıda temizleyebilir
Kod:[COLOR=#000088][FONT=Verdana]$injectcheck[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#339933][FONT=Verdana]=[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#990000][FONT=Verdana]preg_replace[/FONT][/COLOR][COLOR=#009900][FONT=Verdana]([/FONT][/COLOR][COLOR=#0000FF][FONT=Verdana]"[^À-ÿa-zA-Z0-9[COLOR=#000099][B]\\[/B][/COLOR]\-\.\,\:\s[COLOR=#000099][B]\r[/B][/COLOR][COLOR=#000099][B]\t[/B][/COLOR][COLOR=#000099][B]\n[/B][/COLOR] ]"[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#0000FF][FONT=Verdana]''[/FONT][/COLOR][COLOR=#339933][FONT=Verdana],[/FONT][/COLOR][COLOR=#000088][FONT=Verdana]$injectcheck[/FONT][/COLOR][COLOR=#009900][FONT=Verdana])[/FONT][/COLOR][COLOR=#339933][FONT=Verdana];[/FONT][/COLOR]
3. olarak bahsetmek istediğim yol gelen verileri yine kontrol ederek. Örneği gelen sayfa idsi INT mi ?
erhangi üyenin detaylarını gösteren bir sayfa düşünün;
x.php?uyeid=1 ( Bu adres 1 nolu uyenin bilgilerini gostersin )
Kod:[COLOR=#000088][FONT=Verdana]$id[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#339933][FONT=Verdana]=[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#990000][FONT=Verdana]mysql_real_escape_string[/FONT][/COLOR][COLOR=#009900][FONT=Verdana]([/FONT][/COLOR][COLOR=#000088][FONT=Verdana]$id[/FONT][/COLOR][COLOR=#009900][FONT=Verdana])[/FONT][/COLOR][COLOR=#339933][FONT=Verdana];[/FONT][/COLOR][/FONT][/COLOR] [COLOR=#191919][FONT=Arial][COLOR=#000088][FONT=Verdana]$sorgu[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#339933][FONT=Verdana]=[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#0000FF][FONT=Verdana]"SELECT isim,soyad,bla,bla FROM uyeler WHERE id = [COLOR=#006699][B]$_GET[id][/B][/COLOR]"[/FONT][/COLOR][COLOR=#339933][FONT=Verdana];[/FONT][/COLOR]
Eminim birçoğunuz zaten yukarıdaki kodun yeterince güvenli olduğunu düşünüyorsunuz fakat değil.Mysql 4.x ile birlikte mySQL union select destegi vermeye başladı.
Saldırganın tekinin ?id=-1 UNION SELECT 0,uye,parola FROM uye olarak istek yaptığını düşünsenize..Birinci asıl select sorgusu herhangi bir sonuç döndürmeyeceği için dönen sonuclar saldırganın girdigi union select içindeki alanlar olacaktır.
Dikkatinizi çektiyse tırnak kullanmadan böyle bir saldırı yapılabiliyor, dolayısıyla bu nokta dikkat edilmesi gereken bu tip id tarzı bilgileri sorguya alırken veri tipini kontrol etmek.
Bunu (int)$degisken veya intval($degisken); seklinde yapabilirsiniz.Ya da is_integer, is_numeric gibi fonksiyonlarla kontrol edip gerekli manual try/catch mekanizmasını kurabilirsiniz.
Ya da bu tür değerleri tırnak içine alarak saldırganın işi zorlaştırılabilir.(where id = $id gibi) Zira, bu durumda saldırgan union select sorguları sokabilmek için ilk önce ilk SELECT sorgusunu bitirmek zorunda kalacak ve UNION SELECT yazmadan önce karakterini yazacak.Fakat mysql_real_escape_string burda devreye girip karakterini escape edeceği için olası saldırılar geçersiz hale gelir.
Yani daha güvenli bir kod aşağıdaki gibi olacak;
Kod:[COLOR=#000088][FONT=Verdana]$id[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#339933][FONT=Verdana]=[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#990000][FONT=Verdana]intval[/FONT][/COLOR][COLOR=#009900][FONT=Verdana]([/FONT][/COLOR][COLOR=#000088][FONT=Verdana]$_GET[/FONT][/COLOR][COLOR=#009900][FONT=Verdana][[/FONT][/COLOR][COLOR=#0000FF][FONT=Verdana]"id"[/FONT][/COLOR][COLOR=#009900][FONT=Verdana]][/FONT][/COLOR][COLOR=#009900][FONT=Verdana])[/FONT][/COLOR][COLOR=#339933][FONT=Verdana];[/FONT][/COLOR][/FONT][/COLOR] [COLOR=#191919][FONT=Arial][COLOR=#000088][FONT=Verdana]$sorgu[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#339933][FONT=Verdana]=[/FONT][/COLOR][COLOR=#110000][FONT=Verdana] [/FONT][/COLOR][COLOR=#0000FF][FONT=Verdana]"SELECT * FROM uyeler WHERE id = "[/FONT][/COLOR][COLOR=#000088][FONT=Verdana]$id[/FONT][/COLOR][COLOR=#0000FF][FONT=Verdana]" "[/FONT][/COLOR][COLOR=#339933][FONT=Verdana];[/FONT][/COLOR]
Taha Mumcu...
Er0in412 Saygılarla.
Hocam sen 1 2 siteyi uyarı şekilde index baş o zamn bütün severler bu uyarını dikkate alırlar 😊
- Durum
- Üzgünüz bu konu cevaplar için kapatılmıştır...
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 2
- Görüntüleme
- 37
- Cevaplar
- 2
- Görüntüleme
- 159
- Cevaplar
- 1
- Görüntüleme
- 163
- Cevaplar
- 11
- Görüntüleme
- 1K
