OWASP Juice Shop 学习 五
解锁 Login Admin (Log in with the administrator’s user account.)
浏览器F12 打开开发者工具,访问 http://192.168.31.203/#/login,邮件地址填 '1 ,密码随便填,点登陆。出现异常页面。
从 http://192.168.31.203/rest/user/login 的回复消息看,返回500报错。
报错信息,“message”: “SQLITE_ERROR: near “1”: syntax error” 可以看出使用的SQLITE数据库。
报错信息中,居然还有用户登陆时的查询SQL语句,“sql”: “SELECT * FROM Users WHERE email = '‘1’ AND password = ‘e10adc3949ba59abbe56e057f20f883e’ AND deletedAt IS NULL”。存在SQL注入的可能。
在条件语句 WHERE email = '‘1’ ,这是是3个单引号,'1是我们手工输入的。
试着在电子邮箱处填写 ‘ or 1 – ,密码随便填,点击登陆。发现可以登陆,用户居然是admin 管理员。
根据出错时暴露出来的查询SQL语句,填入 ’ or 1 – ,应该是使用下面的查询语句:
SELECT * FROM Users WHERE email = '' or 1 -- AND password = 'e10adc3949ba59abbe56e057f20f883e' AND deletedAt IS NULL
条件 email = ‘’ or 1 ,必然为真
– 是SQL注释 ,将后面的条件 AND password = ‘e10adc3949ba59abbe56e057f20f883e’ AND deletedAt IS NULL屏蔽。
登陆时的查询语句为:
SELECT *
FROM Users
WHERE email = ''
OR 1