SQL Injectionの勉強をしていて、以下の様なSQL文が動作しているのを見つけました。
これがうまく動くのが理解できなかったのですが、どのような解釈がされて、Where部分が恒真となっているのでしょうか。
以下のようにテーブル作成。
sql
1CREATE TABLE User ( 2 id nchar(10), 3 pass nchar(10) 4); 5 6INSERT INTO User VALUES('admin', 'adminpass');
このテーブルに対して以下のクエリを実行すると、adminのレコードが取得できました。
sql
1SELECT * FROM User where pass = '' != '' --'
このサイトにて現象確認しています。
回答2件
あなたの回答
tips
プレビュー