基于约束的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
防范:
服务端检测输入数据长度
相关文章
- 01-18二十四.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例
- 01-18无处不在的安全漏洞-XSS(1) 攻击方式和危害及实例讲解
- 01-18基于约束的sql攻击的讲解和例题
- 01-18SQL的主键和外键约束
- 01-18使用SQL语句统计数据时sum和count函数中使用if判断条件的讲解
- 01-18基于SQL和PYTHON的数据库数据查询select语句
- 01-18SQL注入之Sqli-labs系列第十五关和第十六关(基于POST的时间盲注)
- 01-18SQL注入之Sqli-labs系列第四十一关(基于堆叠注入的盲注)和四十二关四十三关四十四关四十五关
- 01-18[转]SQL的主键和外键约束
- 01-18SQL的主键和外键约束(转)