Yazılım | Programlama SQL İNJECTİON , Sızmaları Kapatma

ozanx07

Üye
13 Ocak 2019
76
2
Antalya
Satın Aldığım Scriptin Admin Paneline her türlü imleçle girilmekte lütfen yardım edin bir türlü yapamadım her türlü giriyor nasıl yapıcam yardımcı olun.


Kod:
<?php include ('../config.php');
include ('../inc/sitedata.php'); 



$Login['Unexpected'] = array(
    'Code' => 999,
    'Text' => 'Sistemsel Hata'
);

$Login['mustFilled'] = array(
    'Code' => 999,
    'Text' => 'Tüm boşlukları eksiksiz doldurun'
);
$Login['Success'] = array(
    'Code' => 200,
    'Text' => 'Giriş Başarılı,Hoşgeldiniz,Yönlendiriliyorsunuz'
);
$Login['Failed'] = array(
    'Code' => 404,
    'Text' => 'Hatalı Giriş Yaptınız,Tekrar Deneyin'
);



if (!isset($_POST['username'], $_POST['password'])){
    Output($Login['Unexpected']);
}
foreach($_POST as $index => $value){
    if (strlen($value) < 1){
        Output($Login['mustFilled']);
    }
}

$username = $_POST['username'];
$password = $_POST['password'];


$query = mysqli_query($connect, "SELECT * FROM adminp WHERE username = '$username' AND password = '$password'");
if (mysqli_affected_rows($connect)){
    $fetch = mysqli_fetch_array($query);
    $_SESSION['login'] = true;


    Output($Login['Success']);
}else{
    Output($Login['Failed']);
}
?>
 

whatamnotsaying

Katılımcı Üye
29 Mar 2020
408
5
Veritabansız çalışmaya odaklandığımdan SQL açığı nasıl kapatılır hakkında geniş bir bilgiye sahip değilim. Fakat bu demek değildir ki, SQL açığının mantığını anlamamış olayım :)


Size önerebileceğim yöntem, madem kullanıcı bir takım karakterler girerek sistemi bug'a sokup içeriye giriş sağlıyorsa o zaman biz de o karakterleri filtreleriz yok ederiz. Buna "Sanitize İnput" deniliyordu galiba araştırabilirsiniz.(Tekrardan araştırdım SQL açığını önlemek için bu yöntemi tavsiye etmiyorlar sanırsam. Fakat gene de ben size bir kod vereceğim bu kod üzerinden istediğiniz SQL payloadı deniyebilirsiniz logininizde.)



Şimdi gördüğüm kadarıyla $_POST forum metoduyla kullanıcı adı ve şifreyi alıp işliyorsunuz.


<?php
$username=filtreleyiciyimbentadaaaa($_POST['username']);
$password=filtreleyiciyimbentadaaaa($_POST['password']);
function filtreleyiciyimbentadaaaa($supheliyimben){
return preg_replace('/[^\w]/i', '', $supheliyimben);
}
?>



Bu kodun özelliği [a-zA-Z0-9_] listesinde olmayan tüm karakterleri silmesidir. Yani zararlı karakterleri filtrelemiş olucağından SQL açığı olamayacaktır.


Dediğim gibi veritabanlarıyla fazla muhattap olmadığımdan SQL açığına uygun en iyi çözümü önerdiğimi söyliyemem. Sadece bu çözümün de olabileceğini savunuyorum.
 
Son düzenleme:
Ü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.