打开题目连接,是一个登录界面,猜测可能需要SQL注入,题目提示“SQL约束攻击”,并不了解,搜集资料了解一下:
由于SQL语句在执行字符串比较时,会去除字符串尾部多余的空格,因此下面两个查询语句结果相同
SELECT * FROM user WHERE username = “admin”
SELECT * FROM user WHERE username = "admin "(多一个空格)
因此假设在登录时执行的查询操作为
SELECT * FROM user WHERE username = “admin”
会得到两个结果“admin”和“admin ”,同时如果我们不知道“admin”的密码,却知道“admin ”的密码,且“admin”在数据库中的位置更靠前,那么我们可以使用“admin”的用户名和“admin ”的密码登录“admin”
因此,我们首先猜测可能存在管理员账户“admin”,根据上面的原理,需要注册一个用户名为“admin”+很多空格的用户,密码随意,注册成功后就可使用用户名“admin”和之前设置的密码登录“admin”账户,得到flag