私はいくつかのハッキングツールがSQLインジェクションの脆弱性を持つWebページを自動的に見つけることができます。SQLインジェクションの脆弱性がPROGRAMMATICALLYかどうかを確認するには?
どのように動作しますか?
私はいくつかのハッキングツールがSQLインジェクションの脆弱性を持つWebページを自動的に見つけることができます。SQLインジェクションの脆弱性がPROGRAMMATICALLYかどうかを確認するには?
どのように動作しますか?
通常、注入を可能にするために、SQLコード構造について推測します。そう
@username=" 'blabla' or 1=1 "
@password=" 'blabla' or 1=1 "
:そうハッカーのようなものを注入しようとします
select count(*) from users where [email protected] and [email protected];
:
例えば、脆弱なユーザ名/パスワードの認証コードと、それはほとんどの場合のようになります結果はcount(*)が0より大きいため、ログインが受け入れられることになります。
簡単なテストでは、入力フィールドに一重引用符を入れ、mysqlエラーメッセージが戻ってくるかどうかを確認することができます。
「SQL構文にエラーがあります。正しい構文がMySQLサーバーバージョンに対応するマニュアルをチェックして、 '1'の近くで使用するようにしてください
またはphp/mysqlエラーが発生した場合共通のエラーメッセージ)、あなたは注射脆弱性があることも知っています。
一般的な「このようなユーザー名はありません」または有効な空の結果セットが戻された場合は、注入脆弱性はほとんどありません。
これらのツールの多くは、ウェブページを破壊することが知られているパラメータのリストを持っています。
彼らのツールは通常、彼らがヒットしていることを確認するために、サイトをスパイダーします:彼らはでパラメータを挿入する複数のrequestsmでこれらのパラメータをオフに解雇しますできるだけ多くのサイトを使用してください。
悪意のあるビットの1つは、悪用可能なWebページを見つけたときを判断することです。場合によっては、Webサーバーがページを再取得するのに時間がかかるか、ページの特定の部分が若干異なる場合があります。チェックするためのもの:
を返すために、ページのために取ら
悪用可能なWebページをいつプログラム的に見つけたのかを判断することができますか? – jxu
しかし、脆弱性発見ツール(人間ではない)はSQLを直接実行することはできません。Webサーバーに要求を送信するだけで、注入が失敗したかどうかを知る方法はありますか? – jxu
ハッカーは創造的でなければなりません。たとえば、応答ページに「ログイン」テキストボックスが表示されていない場合は、ハックが成功したことを意味します。「脆弱性発見ツール」はハッカーと同様に機能し、すべてのシナリオをカバーすることはできません。 –
しかし、ツールとして、それはページがログインページであるかどうかを決して知らない。 – jxu