Bugku-login1(SKCTF)

提示说sql约束攻击,搜了下相关知识

数据库的username字段(或其他字段)如果没有设置为UNIQUE约束,说明字段值可以不唯一

建表时,每个字段都会定义一个长度,例如char(20);注册时,执行INSERT语句超过这个长度的部分会被截断;但是在SELECT查询时将使用完整的字符串进行搜索,所以注册用户名为

admin                  a

不会查找到匹配的结果,也就绕过了检查用户名是否存在的查询,即可成功注册

注册账号为’admin ‘,admin后面有三个空格,可注册成功(字段长度可能为5,超过被截断 后来实验发现一个空格就可以)

登录即可得到flag

执行过程为:

1.查询表中是否有'admin   '(后面有三个空格)
2.没有,则进行插入'admin'(截断后)
3.以'admin'、自己设定的用户名密码进行登录,即可作为admin进入

参考

https://blog.csdn.net/wy_97/article/details/77972375#commentBox

https://www.freebuf.com/column/179817.html