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。
总结
如有错误或未考虑完全的地方,望不吝赐教
相关文章
使用canal监控mysql数据库实现elasticsearch索引实时更新问题
这篇文章主要介绍了使用canal监控mysql数据库实现elasticsearch索引实时更新,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-03-03Window下如何恢复被删除的Mysql8.0.17 Root账户及密码
这篇文章主要介绍了Window下如何恢复被删除的Mysql8.0.17 Root账户及密码,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2020-02-02
最新评论