• 基于约束的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
  • 相关阅读:
    简单小巧的跨平台共享内存代码
    调试发行版程序 (二)
    休息日公园独步偶得
    Minimum Depth of Binary Tree
    LeetCode Length of Last word
    黑书 折纸痕 uva 177
    Palindrome Partitioning II leetcode
    Acumem ThreadSpotter
    C++ string int 转换 split
    Valid Palindrome Leetcode
  • 原文地址:https://www.cnblogs.com/vincebye/p/12730692.html
Copyright © 2020-2023  润新知