SECRET FILE: TRUTH

なぜこれで侵入できたの?

プログラムの中で、SQL文(命令書)は以下のように組み立てられました。

SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1'

コンピュータはこの命令を左から順に読みますが、最後の部分を見てください。
OR '1'='1'

これは日本語に訳すと「または、1と1が同じならOK」という意味です。
1と1は常に同じ(True)ですよね?

つまり、パスワードが合っていようがいまいが、「または1=1(正解)なら全部OK!」というルールが追加されたことで、ガードマン(DB)は「あ、条件満たしてるんで通っていいっすよ」と通してしまったのです。

これがSQLインジェクションの正体です。