2016-10-10 12 views
0

私はそれについて学びたいと思っていたので少し質問をしています。質問があります。私は、HTMLフォームに'hi'を入力し、私たちはテーブルに配置されて得るために必要な情報は、ユーザーと呼ばれる応答ユニオンでのSQLインジェクション

Error: The following error occurred: [near "hi": syntax error] 

Query: SELECT * FROM personnel WHERE name=''hi'' 

として、これを取り戻します。私はsqlを見ていましたが、ここでは2 + select文の結果を組み合わせた結合演算子を見ています。

私はこれを入力として試してみます:1 UNION SELECT * FROM usersと私は何も戻ってこないので、テーブルの人員の名前としてその入力から検索したようです。私はこれがうまくいくと思ったのは、クエリが次のようになるからです:SELECT * FROM personnel WHERE name=1 UNION SELECT * FROM users。私はこの1 UNION演算子は、私の入力に間違った何かを働くか、どのように

答えて

0

を理解していない午前:

set @hi = "'hi'"; 
select @hi; 

SELECT * FROM personnel WHERE name="'hi'" 

シミュレート:

insert into personnel (`name`) values("'hi'"); 
insert into personnel (`name`) values("'hello'"); 
select * from personnel where `name` != "'hi'" 
0
-- you can't use a double '' in sql query 
Query: SELECT * FROM personnel WHERE name='hi' 
+0

私は二重引用符を使用して、SQL文が何であるかを確認し、注入のために何かをフィルタリングしたかどうかを確認しました。 – user2747058

0

ためpersonnelおそらくSQLが無効ですおよびusersは異なる形状を有する。あなたは最初のselectと同じものを注射する必要があります。

また、SQLに連結するのではなく、パラメータ化されたクエリを使用すると、問題はなくなります。

+0

よろしくお願いいたします。 – user2747058

関連する問題