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
  • 相关阅读:
    tcpdump命令详解
    Python isdecimal()方法
    Python-Tkinter几何布局管理
    Python choice() 函数
    Python中的join()函数的用法
    PLSQL连接虚拟机中的Oracle数据库
    卸载oracle
    teradata学习
    teradata在虚拟机安装客户端sql Assistant
    oracle面试
  • 原文地址:https://www.cnblogs.com/vincebye/p/12730692.html
Copyright © 2011-2022 走看看