php
  • mysql
  • sql
  • sql-injection
  • 2013-01-06 2 views 8 likes 
    8

    セキュリティテストプロジェクトのために自分のlocalhost上に作成されたダミーのWebサイトでSQLインジェクションを実行しようとしています。SQLインジェクションが正常に動作しない

    私はそれをバイパスする必要がありますので、ユーザー名とパスワードフィールドに文字列" OR "='を入力しようとしたと表示ログイン正しい - しかし、その代わりに、それはログインを表示するには、

    にSQLインジェクションではない理由を理解するために、任意の助けを失敗しました

    <?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

    おそらく魔法の引用符の問題 – user1909426

    答えて

    12

    を作業あなたの注入文字列は次のようにする必要があります:
    ユーザー名とパスワード:

    ' or '1' = '1 
    

    ユーザー名(多くの場合)またはパスワード:(これは、クエリで最初に来た1に依存して)、クエリの
    #コメントレスト。また
    The SQL Injection Knowledge Base

    あなたは私の作ったスライド(ミリ秒のパワーポイントファイル(PPSX))をダウンロードすることができ実用SQL-について:SQLインジェクションの詳細については

    ' or '1'='1' # 
    

    は、あなたがこの完璧なURLをチェックアウトすることができます注入:' or '1' = '1' --


    SQL-injection in action

    +1

    ...正しいものがあります。 '# 'は重要です。さもなければ、注射は 'password'フィールドになければなりません。 –

    2

    がこれを注入してくださいは常に真であり、----の後のすべてがコメントであり、チェックされません。

    +3

    私はいくつかのdb実装(特にmysql)の前にスペースが必要であることを発見しました。それ以外の場合はコメントとしてカウントされません。 – Steve

    +0

    ありがとう、それを知らなかった。私の答えを編集しました! :) – P1nGu1n

    関連する問題