基于约束的SQL注入[亲测有效]

基于约束的SQL注入[亲测有效]# 漏洞原理 在谈论这种攻击手法之前,首先我们需要了解几个关键知识点。 1、在SQL中执行字符串处理时,字符串末尾的空格符将会被删除。换句话说,‘nocoriander’和‘nocoriander …

	基于约束的SQL注入[数据库教程]

# 漏洞原理

在谈论这种攻击手法之前,首先我们需要了解几个关键知识点。

1、在SQL中执行字符串处理时,字符串末尾的空格符将会被删除。换句话说,‘nocoriander’和‘nocoriander    ’几乎是等效的

例如下列代码,和使用用户名‘admin’结果是一样的

1 select * from users where username=nocoriander       ‘;

2、在所有的INSERT查询中,SQL都会根据varchar(n)来限制字符串的最大长度。也就是说,如果字符串的长度大于”n”个字符的话,那么仅使用字符串的前”n”个字符。比如特定列的长度约束为”5″个字符,那么在插入字符串”nocoriander”时,实际上只能插入字符串的前5个字符,即”nocor”。

# 攻击手法

首先创建数据库 test

image.png

给test库添加users表,表中有两个字段username,password

image.png

添加数据;username=admin;password=123456

image.png

查看users表中的数据

image.png

使用另一种方式查看表中的数据,

发现查看的结果是一样的

image.png

接下来再次添加数据

username=‘admin            ‘;     注意:admin后面跟了空格

password=‘newpwd‘

image.png

再次查看表中的数据

image.png

给定条件,查看users表中,username为admin的数据

image.png

# 漏洞危害

现在,如果使用用户名“admin”和密码“newpwd”登录的话,则所有搜索该用户名的SELECT查询都将返回第一个数据记录,也就是原始的数据记录。

这样的话,攻击者就能够以原始用户身份登录。

# 防御手段

1、将要求或者预期具有唯一性的那些列加上UNIQUE约束。

2、最好使用‘id‘作为数据库表的主键。并且数据应该通过程序中的id进行跟踪

3、可以用手动调整输入参数的限制长度

基于约束的SQL注入

原文地址:https://www.cnblogs.com/Bcxc/p/13475953.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6764.html

(0)
上一篇 2023-04-04
下一篇 2023-04-04

相关推荐

  • Python和C++中的popen函数用于子进程输入输出管理

    Python和C++中的popen函数用于子进程输入输出管理在编写Python和C++程序时,popen函数被广泛使用来创建子进程并进行输入输出管理。

    2024-03-05
    32
  • sql递归查询父子节点「终于解决」

    sql递归查询父子节点「终于解决」一、表结构 二、递归查询当前节点的所有父节点 select * from test start with id = 3 connect by prior pid = id 三、递归查询当前节点的所有…

    2023-03-05
    104
  • sql语句之内连接与外连接的区别_自连接查询的sql语句

    sql语句之内连接与外连接的区别_自连接查询的sql语句内连接: 查询效率:速度较快 内存占用:先笛卡尔积,再进行where晒减,内存占用在初期笛卡尔积的时候会很大。 内连接占用内存空间大 显示内连接和隐式内连接除了写法不一样,其他没有什么不同 外连接:…

    2023-02-19
    483
  • Python中删除非空目录的方法

    Python中删除非空目录的方法在Python中,我们可以利用os模块实现删除非空目录。具体操作方法是调用os模块的rmtree()函数,该函数可以递归地删除目录及其子目录下的所有文件和文件夹。下面是代码示例:

    2024-03-01
    45
  • resources_cn.jar是什么?

    resources_cn.jar是什么?resources_cn.jar是一个Java Archive(JAR)文件,包含用中文编写的Java资源文件。Java资源文件包括程序国际化所需的各种资源,如字符串、图像、音频和属性文件等,以及JAR文件中的元数据信息。它旨在为Java开发人员提供一种更方便的方式来管理和使用中文资源。

    2024-05-02
    16
  • 包含python中display什么意思的词条

    包含python中display什么意思的词条display()是一种函数,功能是显示输出函数。

    2023-10-30
    78
  • Python读取数据库简单实用教程

    Python读取数据库简单实用教程随着互联网行业的不断发展,越来越多的数据需要存储和管理。数据库是一种被广泛应用的数据管理工具,而Python作为一种流行的编程语言,也在数据库的读取和管理方面得到了广泛的应用。本文将介绍Python读取数据库的基本方法及相关的知识点。

    2024-03-24
    30
  • kafka修改偏移量offset_kafka offset管理

    kafka修改偏移量offset_kafka offset管理在消费Kafka中分区的数据时,我们需要跟踪哪些消息是读取过的、哪些是没有读取过的。这是读取消息不丢失的关键所在。Kafka是通过offset顺序读取事件的。如果一个消费者退出,再重启的时候,它知道从

    2023-01-26
    106

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注