MySQL约束攻击的原理和复现方式
作者:bouIevard
这篇文章主要介绍了MySQL约束攻击的原理和复现方式,具有很好的参考价值,希望对大家有所帮助,
MySQL约束攻击的原理和复现
在MySQL数据库中,数据是有字符长度限制的。
对于下面这个数据库:
username和password的限制都是设置为15个字符。
当尝试注册一个超过15字的字符串时,系统就会报错。
这是由于在MySQL环境变量sql_mode中添加了STRICT_TRANS_TABLES字样,规定了严格模式。
但如果有些数据库没有设置严格模式,系统就会对输入的非法字符串进行转换,
出现了SQL约束攻击
在SQL注册的时候,是不能够注册已经存在的用户名的(即使在后面加空格也不可以),但是可以考虑创建一个名字叫‘admin 1’的超长字符串用户,在SQL比对时,它显然是和admin不同的(因为末尾有一个1,所以空格是有效的),但是在非严格模式下,SQL会去掉后面多余的字符,将“admin ”注册到用户中,
数据库就变成了这样:
发现数据库中出现了两个admin,然后再使用admin、mypass登陆,由于比对的时候,末尾的空格是被忽略掉的,所以就成功登入了admin。
总结
如有错误或未考虑完全的地方,望不吝赐教