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。

总结
如有错误或未考虑完全的地方,望不吝赐教
相关文章
mysql启动失败之mysql服务无法启动(服务没有报告任何错误)的解决方法
作为一名程序猿,必不可少的便是和mysql打交道,那当mysql故障,服务无法启动时该怎么解决呢,下面这篇文章主要给大家介绍了关于mysql启动失败之mysql服务无法启动,服务没有报告任何错误的解决方法,需要的朋友可以参考下2022-05-05
mysql 5.6.26 winx64安装配置图文教程(一)
这篇文章主要为大家详细介绍了mysql 5.6.26 winx64安装配置图文教程,感兴趣的小伙伴们可以参考一下2016-08-08


最新评论