首页 > 数据库 >SQL语法与SQL注入漏洞の入门(第三周)

SQL语法与SQL注入漏洞の入门(第三周)

时间:2024-11-08 19:18:44浏览次数:6  
标签:入门 列名 SQL 第三周 查询 表名 数据 数据库

基础知识

一、SQL语言

  • 定义:

  • SQL是结构化查询语言(Structured Query Language)的简称,是一种在关系型数据库中定义和操纵数据的标准语言。

  • 特点:

  • 非过程化语言,没有分支、循环结构,通过几个命令动词就可以实现对数据库以及数据的查询和管理。

  • 统一的语言,为许多任务提供了统一的命令,如查询数据使用select from关键字,在表中插入、修改、删除数据使用insert into、update、delete from关键字等。

  • 是所有关系型数据库的公共语言,可与数据库程序协同工作,比如MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase等。

  • 功能:

      • 数据定义(DDL):定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。

      • 数据操纵(DML):对数据库中的数据进行添加、修改、删除、查询等操作。

      • 数据查询(DQL):从数据库中检索数据。 *数据控制(DCL):对用户访问数据的控制有基本表和视图的授权及回收。

      • 事务控制(TCL):包括事务的提交与回滚。

二、数据库

  • 定义

        数据库是存放数据的一个容器,可以理解为它是用来存放数据的地方。

  • 类型

        关系型数据库,如MySQL、Oracle、SQL Server等。

  • 基础

        RDBMS(关系数据库管理系统)是SQL的基础,同样也是所有现代数据库系统的基础。RDBMS中的数据存储在被称为表(tables)的数据库对象中,表是相关的数据项的集合,它由列和行组成。

SQL语言的基本语法

1. 数据定义语言(DDL)

DDL用于定义和管理数据库结构,包括表、索引、视图等。

• 创建表 
 CREATE TABLE 表名 (
            列名1 数据类型 约束条件,
            列名2 数据类型 约束条件,
            列名3.......
          );
• 删除表  
  DROP TABLE 表名;
• 修改表

添加列:        

   ALTER TABLE 表名 ADD 列名 数据类型 约束条件;

删除列:        

   ALTER TABLE 表名 DROP COLUMN 列名;

修改列的数据类型或约束:      

   ALTER TABLE 表名 MODIFY COLUMN 列名 新数据类型 新约束条件;

2. 数据操纵语言(DML)

DML用于对数据库中的数据进行增删改查操作。

• 插入数据
  INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);
• 更新数据
  UPDATE 表名 SET 列名1 = 新值1, 列名2 = 新值2, ... WHERE 条件;
• 删除数据
  DELETE FROM 表名 WHERE 条件;
• 查询数据
 SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件 ORDER BY 列名 ASC|DESC;

3. 数据查询语言(DQL)

DQL实际上是DML的一个子集,主要用于查询数据。

• 基本查询
 SELECT 列名1, 列名2, ... FROM 表名;
• 带条件的查询
 SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;
• 排序查询结果
 SELECT 列名1, 列名2, ... FROM 表名 ORDER BY 列名 ASC|DESC;
• 聚合函数

如COUNT(),SUM(),AVG(),MAX(),MIN()等。

 SELECT COUNT(*) FROM 表名;
• 分组查询
 SELECT 列名, 聚合函数(列名) FROM 表名 GROUP BY 列名;
• 多表查询

包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)等。

 SELECT a.列名1, b.列名2 FROM 表a a INNER JOIN 表b b ON a.公共列 = b.公共列;

4. 数据控制语言(DCL)

DCL用于设置或更改数据库用户或角色的权限。

• 授予权限
 GRANT 权限类型 ON 对象 TO 用户;
• 撤销权限
 REVOKE 权限类型 ON 对象 FROM 用户;

5. 事务控制语言(TCL)

TCL用于管理数据库事务。

• 开始事务

大多数数据库默认每条SQL语句都是一个事务,但可以通过显式命令开始一个事务。

• 提交事务
 COMMIT;
• 回滚事务
 ROLLBACK;
• 设置保存点
 SAVEPOINT 保存点名称;
• 回滚到保存点
 ROLLBACK TO SAVEPOINT 保存点名称;

 SQL注入漏洞

  • 定义:

        SQL注入漏洞是一种常见的网络安全漏洞,它允许攻击者通过在应用程序的输入字段中插入恶意的SQL代码,从而执行未经授权的数据库操作。

  • 成因:

        主要存在于未正确验证和过滤用户输入的Web应用程序中,特别是那些使用动态生成SQL查询的应用程序。

  • 原理:

        应用程序在处理用户输入时未对数据进行充分的检查和过滤,导致攻击者可以构造特定的恶意SQL查询语句,这些语句在到达数据库前未被正确处理,从而导致数据库执行了非预期的指令。

  • 危害:

        攻击者可以绕过身份验证、盗取数据、修改数据、执行拒绝服务攻击等,对数据库和应用程序的安全构成严重威胁。

标签:入门,列名,SQL,第三周,查询,表名,数据,数据库
From: https://blog.csdn.net/2403_88364403/article/details/143631641

相关文章

  • 快速入门Zookeeper
    ZookeeperZooKeeper作为一个强大的开源分布式协调服务,扮演着分布式系统中至关重要的角色。它提供了一个中心化的服务,用于维护配置信息、命名、提供分布式同步以及提供组服务等。通过其高性能和可靠的特性,ZooKeeper能够确保在复杂的分布式环境中,各个节点和服务之间的协调和......
  • 「Mac玩转仓颉内测版1」入门篇1 - Cangjie环境的搭建
    本篇详细介绍在Mac系统上快速搭建Cangjie开发环境的步骤,涵盖VSCode的下载与安装、Cangjie插件的离线安装、工具链的配置及验证。通过这些步骤,确保开发环境配置完成,为Cangjie项目开发提供稳定的基础支持。关键词Cangjie开发环境搭建VSCode安装指南Cangjie插件离线安装MacC......
  • ubuntu 安装mysql+redis+nginx
    1.mysql安装vim/etc/apt/sources.list 追加一下内容debhttps://mirrors.aliyun.com/ubuntu/focalmainrestricteduniversemultiversedeb-srchttps://mirrors.aliyun.com/ubuntu/focalmainrestricteduniversemultiversedebhttps://mirrors.aliyun.com/ubuntu/......
  • 【QT】【MYSQL】【WINDOWS】qmysql驱动编译
    文章目录前言一、安装QT,MYSQL二、生成qsqlmysql.dll1.配置mysql.pro2.修改qsqldriverbase.pri3.管理员身份运行x64NativeToolsCommandPromptforVS2022重点!!!!成功执行代码前言提示:参考网上各种安装教程均失败,下面来一个完整qmysql驱动编译,并qt连接数据库操作......
  • [极客大挑战 2019]BabySQL 1
    [极客大挑战2019]BabySQL1打开实例,源代码审计,发现登录请求check.php页面路径,采用get方法根据题目可知这是sql注入,尝试万能密码无果?username=admin'or1=1--+&password=admin尝试orderby、堆叠注入和union联合注入,发现都无效,怀疑字段被过滤(这边基本确定or被过滤)尝试......
  • [SUCTF 2019]EasySQL 1
    [SUCTF2019]EasySQL1根据题目所得是个sql注入题,尝试万能密码显示不对,说明存在输入过滤,尝试堆叠注入1;showdatabases;成功显示数据库列表,并且发现数据库ctf查询数据表,查询出表Flag1;usectf;showtables;尝试select*fromFlag;发现出现错误\思考其sql语句为se......
  • [极客大挑战 2019]HardSQL 1
    [极客大挑战2019]HardSQL1打开实例,发现是个登陆页面,查看源代码,发现又是GET提交check.php万能密码尝试不太行,怀疑字段或者空格被过滤,尝试闭合不加其他东西确认空格、union、and等都被过滤了,尝试加个括号并未出现你可知被我速住了,臭弟弟字样,()未被过滤吧,尝试采用upda......
  • [极客大挑战 2019]LoveSQL 1
    [极客大挑战2019]LoveSQL1代码审计,发现表单方式为get提交到check.php万能密码admin'or1=1#登录成功,这边我以为密码就是flag,结果并不是,结合题目信息,猜想这应该是根据账号密码的注入尝试闭合?username=admin'and1=1%23&password=d3c9cf30a12d1f13d4f778859fb16f73正......
  • 【MySQL】数据库备份详解
    一、引言1.1数据库备份的重要性二、MySQL数据库备份的基础知识2.1备份类型2.2备份工具与方法三、MySQL数据库备份的实施步骤3.1环境准备3.2选择合适的备份工具与方法3.3执行备份3.4验证备份3.5存储与管理备份四、MySQL数据库恢复流......
  • MySQL RC隔离级别下罕见的gap lock
    复现方法:CREATETABLE`test1`(`id`int(11)NOTNULL,`name`varchar(10)DEFAULTNULL,`id1`int(11)DEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`id1`(`id1`);insertintotest.test1values(1,'a',1),(3,'a',3),(5,'a'......