「How To Attack Manual Sql Injection」からSQLインジェクションを学ぶ

ソース:

medium.com

脆弱性:SLQインジェクション

 

訳:

 

SQLインジェクションとは?

SQL インジェクションは、アプリケーションのデータベース層のセキュリティ ホールを悪用するハッキング手法。
このギャップは、製造時に適切にフィルタリングされていない入力によって形成されるため、悪用される可能性があり。 

 

SQLインジェクションはどのように機能しますか?

セキュリティホールがあるため、SQL インジェクションが発生する可能性があり。
このギャップは、開発者がアプリケーションの入力フォームの文字のフィルターである url パラメーターをアクティブにしなかったために形成され、最終的にハッカーがそれを使用してログイン/入力フォームに SQL コマンドを作成できるようになり。

 

SQLインジェクションの影響は?

SQL インジェクションを使用すると、アプリケーションのユーザー名やパスワードなどの機密情報を表示でき。

SQL インジェクションを使用してデータベース内のデータを変更でき。

SQLインジェクションを使用してデータベース内のデータを削除でき。

 

SQLインジェクション脆弱性を見つけるには?

アプリケーションのエラーを参照するために使用される URL パラメータに一重引用符または二重引用符 (「'/"」) を追加し(例:?search=nocool')。

 

add query order by to used 使用する列の数を決定し (例:order+by+1+ — +)。
エラー メッセージが表示されなくなるまで数値を1から2,3,4 と変更して続行し。

 

注入可能な列の検索に使用されるクエリ Union select を追加します。
例: Union+select+1,2,3,4,5,6 

 

 

クエリに @@version を追加して、アプリケーションのデータベースのバージョンを確認し。

 

 

アプリケーションでデータベース名を確認するためのクエリdatabase()を追加し。

 

 

データベース内のテーブル名を検索するためにクエリ table_name を追加 (例: table_name from information_schema.tables)

 

 

テーブル名から列名を検索するクエリ column_name を追加。

例:query column_name from information_schema.columns where table_name=’<table_name>’

 

次のステップでは、列の内容 (電子メール、ユーザー名、パスワードなど) を列にダンプします。

group_concat 関数は、複数の値を 1 つの文字列に連結します。

email,username,password は、データを表示する列です。

from+users は、データを表示する列のテーブル名です。

 

 

ほなほな。