# SQLI Login Bypass'ı Anlamak #

P4$A

Anka Emektar
13 Tem 2021
1,488
2,818
23
";-alert(1)-//
66wh4i4.png

Selamlar yine ben :)
Çeşitli konuların açıldığını görüyorum ve işin arka kısmının anlatılmadığını görüyorum, bu da beni rahatsız etti ve yine klavyeye sarıldım.
Konumuz başlıkta da yazdığı gibi SQL Injection Login Bypass ?
Teori kısmını anlatmayacağım, sql injection ile tonlarca konu yazılmıştır, öğrenmek isteyen okuyabilir.
Dork verip 10 tane login bypass payloadı da vermeyeceğim, kendiniz payloadlarınızı yazacaksınız :D

Gereksinimler: Databaselerin çalışma mantığı ve basit seviyede sql ve php bilirseniz daha iyi anlarsınız ben en kolay seviyede anlatacağım iyi okumalar.
Geçen sefer bir arkadaşımızın ilettiği bir takım fazla illegal işlerin döndüğü bir site atmıştı (fazla illegal dedim herkes nelerin döndüğünü anlar :) ).
Soran olursa sitenin db sıfırlandı sunucudaki yedekleri sildik indexi bıraktık, 1 hafta sonra kapatıldı domain.

O arkadaşa da buradan selam çakalım. 🫡
Ben sitenin frontunu http track ile çekmiştim ,backendi de kendim yazdım sıra geldi anlatmaya;

o65mb5x.PNG

CSS kayması olmuş kusura bakmayın, site bu şekilde idi bir kaç şeyi ben salladım. Genel görünüm bu şekilde idi forum yazmaya kalkmışlar akıllarınca.
4lxv190.PNG

Görüldüğü gibi bir panel var karşımız da şimdi buranın admin paneli olması şart değil, admin.php şekilde dork arayan arkadaşların aramasının sebebi eğer
admin.php den login bypass ile girerler ise direk admin paneline ulaşırlar lakin düz kullanıcıların login olduğu kısımlardan da çok güzel şeyler çıkabiliyor benden öneridir.
dyzpxuc.PNG

Kullanıcı adım "
admin" şifrem "admin" olarak giriş yapmaya çalıştım.
jw7xacl.PNG

Sonuç başarısız oldu ama neden gelin arkada dönen sorguya bakalım.
SQL:
$sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
tam olarak arka planda dönen sorgu bu kullanıcıdan alınan username ve password değişken olarak atanmış kullanıcı giriş yapmaya çalıştığı zaman ise bu şekilde oluyor:
SQL:
$sql = "SELECT * FROM users WHERE username = 'admin' AND password = 'admin'";
kullanıcıdan alınan parametreler bu şekilde yazılıyor.
peki biz bunu nasıl istismar ediyoruz ?
biz herhangi bir payload girdiğimizde ne oluyor?

Payload: ' or 1=1 --


khylj6n.PNG

Bu payloadımı yazdım bakalım arka tarafta ne oldu ?
ktv52ll.PNG

Giriş yap butonuna bastığımda Success yazsını aldım daha sonra;
34qwd58.PNG

Admin panele eriştiğimi öğrendim payloadı yazdıktan sonra sql sorgumuz bu şekile döndü,
SQL:
$sql = "SELECT * FROM users WHERE username = '' or 1=1 --' AND password = '' or 1=1 --'";
EEEE , yani, Ne oldu *** diyenleri duyar gibiyim, duymayanlar çoktan gülüyor :D
Yukarıdaki sorguda şu şekilde işlem oluyor normal şartlar da bizim yazdığımız username ve password iki tırnağın arasına yazılır biz burada bir tane daha tırnak atarak sorgudaki ' lardan çıkmış oluyoruz. daha sonra database'in toplama çıkarma gibi işlemler yaptığını bildiğimiz için ( üslü ifadeler ile işlemler yapmaz. ) ona bir koşul yazıyorum tıpkı lise de gördüğümüz mantık konusu gibi,
nbf8oo6.png

biz burada or kullandık yani veya, istesek and de kullanabilirdik yani ve ,
database burada 1=1 eşitmi diye bakıyor yani doğru bir ifade sondaki -- çift tre de kalan satırı yorum satırına alıyor ve çalışmıyor.
Bizde bu şekilde doğru bir sql sorgusu yazıp kalan sorguyu yorum satırına alıp kalan sorguyu ofsayt çizgisinin gerisinde bırakıyoruz gol geçerli.
yorum satırına almamızın bir nedeni de biz normalde iki tırnak içine yazdığımız da bu şekilde oluyor.

' ' or 1=1 -- ' yani yazdığımız payload 2 tırnağın arasına yazıldığı için sonra bir tırnak oluyor, o tırnak bize sql syntax hatasını veren tırnaktır bu yüzden sql tespiti için ' atarız.
Syntax hatası almayıp giriş yapıyoruz.
Buraya kadar okuduysan yoruma gözlüklü emoji 😎 at ki kimin okuyup kimin okumadığı belli olsun.
Sorusu olanlar için dm kutum açıktır, müsait oldukça dönerim.
BACKEND ' DE KULLANDIĞIM KOD:
PHP:
<?php
session_start();

$dbhost = "pasa.php";
$dbuser = "ne_bakıyon_kardes";
$dbpass = "la_git";
$dbname = "db_yok";

$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);

if ($conn->connect_error) {
    die("Bağlantı Hatası: " . $conn->connect_error);
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST["username"];
    $password = $_POST["password"];


    $sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {

        $_SESSION["username"] = $username;
        echo "<script>
                alert('Success');
                window.location.href = 'success.php';
              </script>";
        exit;
    } else {
        echo "<script>
                alert('Try Login');
                window.location.href = 'admin.php';
              </script>";
        exit;
    }
}

$conn->close();
?>
 

'Ra

Kıdemli Üye
21 Kas 2015
2,389
930
Ellerinize Sağlık hocam eğitici bir konu genel olarak sadece uygulama değil işin mantığını anlamak ve kendilerini geliştirmek isteyenler için çok güzel bir kaynak <3
 

P4$A

Anka Emektar
13 Tem 2021
1,488
2,818
23
";-alert(1)-//
Elinize sağlık hocam. Sonunda açığa çıkmış oldu bu olay :D 😎
:cool:
Ellerinize Sağlık hocam eğitici bir konu genel olarak sadece uygulama değil işin mantığını anlamak ve kendilerini geliştirmek isteyenler için çok güzel bir kaynak <3
<3
Teşekkürler
Teşekkürler
Wow çılgınsın men
Thanks Man
Acilan 200 sqli konusundan daha basarili
Teşekkür Ederim
Teşekkürler
Emeğine sağlık gözüm
Sağ ol Abim, çok fazla kas yapmışsın abi sal 120 kilo adam mı döveceksin
 
Ü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.