9

セキュリティテストプロジェクトのためにローカルホスト上に作成されたダミーのWebサイトで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>
4

2 に答える 2

15

インジェクション文字列は次のように なります。
ユーザー名とパスワード:

' or '1' = '1

ユーザー名(多くの場合)またはパスワード:(クエリの最初に来るものによって異なります)クエリ
#の残りの部分にコメントします。

' or '1'='1' #

SQLインジェクションの詳細については、次
の完全なURLを確認してください。SQLインジェクションナレッジベース

于 2013-01-06T14:04:38.857 に答える
3

これを注入してみてください:' or '1' = '1' --

'1' = '1'は常にtrueであり、--以降はすべて--コメントであり、チェックされません。

于 2013-01-06T14:06:59.293 に答える