0

教室で使用する SQL インジェクションを表示できる Web サイトを Django で作成しようとしていますが、クエリを悪用しようとしても何も返されません。MYSQL データベースを使用しています

peopledata = people.objects.raw("select * from people where name = \"%s\" "%input
result = list(peopledata)

入力フィールドで and を使用してみましたが、何も表示されませんでし"; show tables; --た。"; --悪用されたデータを表示する方法はありますか?

4

1 に答える 1

0

あなたの入力は、any_name OR'x'='x'またはany_name OR name IS NOT NULL

最初の入力は、最初の節が何であれ、節が真であることを保証します。

2 番目のクエリは、検索した名前ではなく、データベース内のすべてのレコードを返します。これは、大きなセキュリティ リスクを示しています。返されたデータが機密データ (id SSN) である場合、ユーザーは表示してはならないデータへのアクセス権を取得しています。

別の例は次のとおりです。

any_name; DROP TABLE people; --

と:

any_name; INSERT INTO people('email','passwd','login_id','full_name') 
        VALUES ('steve@email.com','hello','steve','Steve LastName'); --

注: これらのクエリを DB に適切に適用します。必要に応じて一重/二重引用符を使用するなど。

于 2013-06-14T17:06:57.753 に答える