基于约束的sql攻击的讲解和例题

基于约束的sql攻击

首先我们先了解一下几个知识点:

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

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


我们查看发现是这样一个页面

基于约束的sql攻击的讲解和例题

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

基于约束的sql攻击的讲解和例题

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

我们尝试一**册admin账号

基于约束的sql攻击的讲解和例题

这里既然提示admin存在

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

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

admin 1/Aaaaaaa1

基于约束的sql攻击的讲解和例题

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

基于约束的sql攻击的讲解和例题
防范:
服务端检测输入数据长度