BugKu Web渗透之 login1
题目如下:
启动场景,打开网页。
发现是一个登陆页面,如下图所示。
步骤一:尝试输入各种值,看返回结果。
输入admin,admin 提示 用户名或密码错误 。
输入admin' or 1=1#,admin 提示 用户名或密码错误 。
输入admin' or '1'='1,admin 提示 用户名或密码错误 。
输入admin'-0-',admin 提示 用户名或密码错误 。
感觉没有区别的提示,这样很难测出可注入点。
步骤二:点击没有账号按钮,尝试注册。
输入admin和6位数密码,提示admin已存在。
这时没有太多提示的时候,返回到题目的提示:SQL约束攻击。
步骤三:了解SQL约束攻击。
SQL约束攻击的基本原理
这种攻击利用了以下数据库行为特点:
-
字符串截断:某些数据库会对超出长度限制的字符串自动截断
-
唯一约束:数据库在判断唯一性时可能只比较部分字符
-
宽松的比较规则:某些数据库在比较时会忽略尾部空格
其中常见的攻击场景就是用户注册绕过。攻击者注册一个与目标用户相似但带有额外空格或特殊字符的用户名:
-- 正常用户
INSERT INTO users (username, password) VALUES ('admin', 'secure123');-- 攻击者注册
INSERT INTO users (username, password) VALUES ('admin ', 'hacked123');
步骤四:利用SQL约束攻击来进行攻击。
我们可以尝试输入已知用户名admin,后加空格,之后再手动填写密码。再用admin和新的密码登录看是否能登录成功。
1.在注册页面注册用户名 “admin ” 和密码 “Zz1234”的用户,显示注册成功。
2.返回登录页面,用用户名 “admin” 和密码 “Zz1234”去登录,最后成功登录,显示flag。