zoukankan      html  css  js  c++  java
  • 基于约束的SQL攻击

    基于约束的SQL攻击

    学习了一个新的基于SQL的攻击方式,应该也是大多数不断堆积【空格】的攻击方式的原理

    原理

    在SQL中执行字符串处理时,字符串末尾的空格符将会被删除

    数据库User表为:

    ID Username Password
    1 V1ce0ye 123456

    User表中字段详细数据为:

    类型 长度
    ID int 11
    Username varchar 20
    Password varchar 255

    其中Username字段限定字符长度为20,此时如果我们注册一个用户,Username为V1ce0ye[30*空格]1,Password为654321,语句为

    INSERT User (Username,Password) VALUES('V1ce0ye             1','654321')
    

    此时数据表中

    ID Username Password
    1 V1ce0ye 123456
    2 V1ce0ye 654321

    此时存在两个Username为V1ce0ye的列,而此时以V1ce0ye与654321这个密码登录时,会登录查询到的第一个用户数据也就是原始用户,造成登录。

    思考

    像这种漏洞危害还是较小,大部分后端都会以最先查到的username的password进行匹配,以最新的几率很小

    而且一般管理员用户与普通用户存储在不同的表,不太可能去越权登录到管理员用户,危害大多为普通用户进行登录。

    修复

    • 后端代码检测输入数据长度
    • 将需要防护字段设置为UNIQUE
  • 相关阅读:
    leetcode 18 4Sum
    leetcode 71 Simplify Path
    leetcode 10 Regular Expression Matching
    leetcode 30 Substring with Concatenation of All Words
    leetcode 355 Design Twitte
    leetcode LRU Cache
    leetcode 3Sum
    leetcode Letter Combinations of a Phone Number
    leetcode Remove Nth Node From End of List
    leetcode Valid Parentheses
  • 原文地址:https://www.cnblogs.com/vincebye/p/12730692.html
Copyright © 2011-2022 走看看