2013-01-06 15 views
8

Bir güvenlik testi projesi için localhost'umda oluşturulan sahte bir web sitesinde SQL enjeksiyonu yapmaya çalışıyorum. Ama bunun yerine, SQL enjeksiyon değil neden giriş anlamak içinSQL injection doğru çalışmıyor

Herhangi bir yardım başarısız görüntüler - bu atlayacak ve ekran Girişi Doğru böylece

Ben kullanıcı adı ve şifre alanına dizeyi " OR "=' girmeye çalıştı

<?php 
    mysql_connect('localhost', 'root', ''); 
    mysql_select_db('test'); 

    if(isset($_POST['username'])&&isset($_POST['password'])){ 
     $username =$_POST['username']; 
     $password = $_POST['password']; 
     echo $username; 
     echo $password; 

     if(!empty($username)&&!empty($password)){ 
      $query ="SELECT id FROM users WHERE username = '$username' AND password = '$password'"; 
      $query_run = mysql_query($query); 

      if(mysql_num_rows($query_run)>=1){ 
       echo 'Login Correct'; 
      }else{ 
       echo 'Login Failed'; 
      } 
     } 
    } 
?> 
<form action="test.php" method="POST"> 
    Username: <input type="text" name="username"> 
    Password: <input type="text" name="password"> 
    <input type="submit" value="Submit"> 
</form> 
+0

Muhtemelen bir sihirli tırnak sorunu – user1909426

cevap

12

Kişisel enjeksiyon dizesini çalışma böyle olmalı:
Kullanıcı adı ve şifre:

' or '1' = '1 

adı (genellikle) ya da şifresi: Sorgunun
# comments kalanını (O hangi bir sorguda önce gelir bağlıdır). Ayrıca
The SQL Injection Knowledge Base

sen benim yapılan slaytlar (ms power point dosyası (ppsx)) indirebilirsiniz pratik SQL- hakkında: SQL enjeksiyonu hakkında daha fazla bilgi için

' or '1'='1' # 

, bu mükemmel url kontrol edebilirsiniz enjeksiyon: ' or '1' = '1' --

:
SQL-injection in action

+1

... Doğru olanı var. '' 'Önemli. Aksi halde, enjeksiyon 'şifre' alanında olmalıdır. –

2

deneyin bu enjekteher zaman doğru ve -- her şey -- sonra bir yorumdur ve kontrol edilmez diyor.

+3

Bazı db uygulamalarında (özellikle mysql) önce bir boşluk olması gerektiğini buldum - aksi halde yorum olarak sayılmaz. – Steve

+0

Teşekkürler, bunu bilmiyordum. Sadece cevabımı düzenledim! :) – P1nGu1n