浅谈sql约束攻击

约束攻击,学习姿势

背景

在bugku做ctf题目的时候,发现了约束攻击这种手法,于是上google学习了新的姿势。感谢作者Dhaval Kapil的文章SQL Attack (Constraint-based)

知识点

数据库字符串比较:数据库在进行字符串比较是会将两个字符串长度保持一致,短的字符串增加长度。假设A字符串为hello,B字符串为hell,数据库会把字符串B变成hell,增加一个空格以保持两个字符串长度一致

INSERT截断:这是数据库的另一个特性,当设计一个字段时,我们都必须对其设定一个最大长度,比如CHAR(10),VARCHAR(20)等等。但是当实际插入数据的长度超过限制时,数据库就会将其进行截断,只保留限定的长度。

具体场景

我们来创建一个数据表

1
2
3
4
create table te_constraint(
username varchar(10),
passwd varchar(10)
)charset=utf8;

然后向其中插入两组数据,第二组数据后面加入了6个空格

1
2
insert into te_constraint values('admin','123456'),
('admin ','12345678');

然后我们发现查处了两组数据

CTF中的约束攻击

来自bugkuctf的login1(SKCTF)

首先我们没用账号,所以先注册一波账号。

然后发现提示

然后我们就去注册一个admin账户

发现admin账户已经存在,如果是挖漏洞的话我会考虑弱口令,注入,xss,csrf等漏洞,这里的话已经知道是约束攻击,我们也不知道admin这个用户名长度是多少,就在admin后面加尽可能多的空格吧,如果不行就再多加一点空格,构造一个新的admin账户。

然后注册成功,得到flag

本文标题:浅谈sql约束攻击

文章作者:xianyu123

发布时间:2019年02月04日 - 16:13

最后更新:2019年05月11日 - 20:52

原始链接:http://0clickjacking0.github.io/2019/02/04/浅谈sql约束攻击/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------    本文结束  感谢您的阅读    -------------