it-swarm-tr.com

AND 1 = 1 ile SQL enjeksiyonu

Lütfen "AND 1 = 1 "SQL enjeksiyon saldırısında. Bu benim üniversitemdeki bir egzersizden.

select * from user where id = 'smith'' AND 1=1;--  and birthdate = 1970;

veya

select * from user where id = 'smith' and birthdate = 1970 AND 1=1;--;
20
Alex

Özel soru, VE 1 = 1 ve VEYA 1 = 1 ile SQL enjeksiyonudur. Burada OP'nin ne istediğinde büyük bir fark vardır. Ben senin öğretmenin olsaydım ve bana JonathanMueller'ın cevabını verseydin, soruyu anlamadığın için berbat bir not alırsın.

VE 1 = 1 genellikle kör SQL enjeksiyonları içinde kullanılır. Bu, gerçek sonucun ne olduğunu belirlemek için uygulamanın sonucundan doğru veya yanlış bir durum arasında belirlemeniz gerektiğidir. Sonuçta listelenen verileri almazsınız, döndürülen tek şey bir değişiklik durumudur.

VEYA 1 = 1 ile Kör SQL enjeksiyonundan yararlanmaya çalışırsanız, VEYA 1 = 1 birincil kullanımı her zaman doğru oluşturmaktır. veritabanından en fazla veriyi almak veya bir giriş komut dosyasının kullanılması durumunda gerçek bir ifadeyi zorlamak için ifadesini kullanın.

Pratik bir kör SQL istismar örneği:

Örneğimizi kullanıyoruz: http://www.site.com/news.php?id=7 Test edelim: http://www.site.com/news.php ? id = 7 ve 1 = 1 <--- bu her zaman doğrudur ve sayfa normal şekilde yüklenir, sorun değil.

http://www.site.com/news.php?id=7 ve 1 = 2 <--- bu yanlıştır, bu nedenle iade edilen sayfada bazı metin, resim veya içerik eksikse bu site kör sql enjeksiyonuna karşı savunmasızdır.

MySQL sürümünü anlamaya çalıştığınız başka bir örnek:

http://www.site.com/news.php?id=7 ve alt dize (@@ sürüm, 1,1) = 4 MySQL sürümü 4 ise bu DOĞRU döndürmelidir. 4 ile 5 ve sorgu TRUE döndürürse sürüm 5 olur.

Alınan örnekler: http://www.exploit-db.com/download_pdf/14475

34
Chris Dale

Normalde, ifadenin "VEYA 1 = 1" olduğunu görürsünüz. Bunun nedeni, programcının parametreleri (kullanıcı kimliği gibi) düzgün işlememesi durumunda, saldırganın tablodaki tüm verileri döndürmek için bir OR 1=1 Kullanabilmesidir.

Örneğin, smith adlı bir kullanıcı hakkında ayrıntılar almak istediğimizi varsayalım. Sorgu, select * from user where id = '?' Olabilir; burada soru işareti, kullanıcının girişindeki bir parametreyle değiştirilir. Saldırgan smith' OR 1=1-- 'U geçerse, sonuçta ortaya çıkan SQL select * from user where id = 'smith' OR 1=1--' Olur. Bu durumda, orijinal sorgudaki ikinci tek tırnak bir yorumun parçası olduğu için atlanır ve sorgu kullanıcı tablosundaki tüm verileri döndürür.

15
JonathanMueller

(En önemsiz, başın üstünde) bir sql enjeksiyon örneği vermek için, bu sorguyu uygulama kodunuzda bir yerde hayal edin ...

select 1 from user where name='[NAME]' and password='[PASS]'

kötü Amaçlı Guy yukarıda belirtilen parametreleri seçtikten sonra, şunları elde edersiniz:

select 1 from user where name='admin' --' and password='[PASS]'
 aşağıdaki seçilmiş, onaylanmamış değerleri kullanarak: 
 [NAME] = '-' ve şifre = '[PASS]' 
 [PASS] değişkeninin değeri önemsiz 

Bu nedenle, sorgunun başarı için 1 ve geçersiz kullanıcı veya geçiş için boş küme döndürmesi gerektiği varsayılırsa, bu kötü kullanıcının "admin" hesabı olarak oturum açmasına izin veren bir hatalı değer döndürülür.

0
Garrett