基于约束的sql攻击
首先我们先了解一下几个知识点:

 1. 在INSERT中,SQL会根据varchar(n)来限制字符串的最大长度。如果字符串的长度大于“n”个字符的话,那么仅使用字符串的前“n”个字符。(这里我们就可以考虑如果我们故意超出规定长度会怎么样?)
 2. 在SQL中执行字符串处理时,字符串末尾的空格符将会被删除(结合上面的这里应该就可以构造出payload了)。也有特殊情况,比如LIKE。
   

现在我们思考
现在一个表里已经有了admin用户
 用户名varchar(30)
再插入一个admin  (25个空格) 1
 因为限制长度30位
所以会只存入前30位  这样就可以创建admin用户
 这就是基于约束的sql攻击,我们来看一个例题
 
  --------------------------------------------------------------------------------------
我们查看发现是这样一个页面




我们先注册了一个账号,然后登录发现


那他的这里应该是想我们以admin身份登录

我们尝试一下注册admin账号




这里既然提示admin存在

结合这里题目基于约束的攻击

我们根据攻击原理注册账号

admin                                                 1/Aaaaaaa1




发现成功  然后以admin登录得到flag




防范:
 服务端检测输入数据长度