背景知识
最近,我遇到了一段有趣的代码,他尝试一切可能来保护数据库的访问安全,例如每当新用户进行注册,将运行以下代码:
为了验证登录信息,将用到下列代码:
攻击手段
首先在处理sql中的字符串时,字符串末尾的空格符都会被删除,换句话来说,”vampire”与”vampire “(有空格)几乎是等效的,这在绝大多数情况下是正确的,例如where子句中的字符串或insert语句中的字符串。
例如,下列语句的查询结果,与使用用户名”vampire”进行查询时的结果是一样的
究其原因是因为在字符串比较过程中,内部在比较之前先进行了补充,使其长度一致再进行比较。
下面在本地复现一遍
这样我们就达到越权的目的。
sql约束攻击的条件:
回到题目