SQL注入-数据库基础/SQL语法

目录

 一,数据库概述

1.1 数据库

1.2 了解 ACID 理论

1.3 识别数据库

二,SQL 语法基础

三,SQL语句实例

3.1 SQL基础语句

3.2 SQL高级语句

四,基于SQL注入理解语法/函数

4.1 语法

4.2 函数

五,目录数据库infomation_schema


 一,数据库概述

1.1 数据库

数据库(DataBase,DB):存储在磁带 磁盘 光盘或其他外存介质上,按照一定结构组织在一起的相关数据的集合

数据库管理系统(DataBase Management System,DBMS):一种操纵和管理数据库的大型软件 用于建立,使用和维护数据库

数据库系统(DataBase System,DBS):由数据库和数据库管理系统组成

简单来说 数据库存放数据 ,数据库管理系统操作数据 他们的集合为数据库系统

网站体系结构


1.2 了解 ACID 理论

ACID 理论是定义数据库管理系统 (DBMS) 中事务的可靠性和一致性的四个关键特征。首字母缩略词 ACID 代表原子性、一致性、隔离性和持久性。以下是对每个属性的简要说明:

原子性 (Atomicity)

原子性确保事务被视为一个单一的、不可分割的工作单元。事务中的所有操作要么都成功完成,要么都没有。如果事务的任何部分失败,则整个事务将回滚到最初的状态,以确保数据的一致性和完整性。

一致性(Consistency)

一致性确保事务将数据库从一种一致状态带到另一种一致状态。数据库在事务执行前后都处于一致状态。换句话说,数据库在整个事务过程中保持一致,并且强制执行所有约束和规则,这可确保数据始终准确且最新。

隔离性(Isolation)

隔离确保多个事务可以并发执行且独立,而不会相互干扰。每个事务在完成之前必须与其他事务是隔离开来的。一个事务的结果不会影响另一个事务的结果,这种隔离可以防止脏读、不可重复读和幻读。

持久性(Durability)

持久性确保一旦事务被提交,就永久记录在数据库中,不可撤销。这意味着即使在系统出现故障的情况下,数据仍然是安全的并且可以恢复。

ACID 理论对于确保了 DBMS 和分布式系统的可靠和一致的数据管理至关重要。通过理解原子性、一致性、隔离性和持久性的概念,开发人员可以设计出既健壮又可扩展的分布式数据库系统。即使存在系统故障、网络问题或其他问题,这些特性能保障系统数据一致性、完整性和可靠性。


1.3 识别数据库

Oracle:1521

MySQL:3306

SQL Server:1433

PostgreSQL:5432

monggoDB:27017

Redis:6379

MemcacheDB:11211

识别数据库方法通过报错信息可进行识别

各数据库与网页编程语言的搭配

常见的搭配

ASP和.NET:Microsoft SQL Server

PHP:MySQL/PostgreSQL

Java:Oracle/MySQL


二,SQL 语法基础

数据定义(Create Drop)

数据操纵(Select Insert Update Delete)

数据控制(Grant Revoke)

  • CREATE :创建新的表 视图或其他数据库中的对象
  • ALTER:修改当显得数据库对象 比如一张表
  • DROP:删除表 视图或者数据库的其他对象
  • SELECT:从表中搜索数据
  • INSERT:创建一条新记录
  • UPDATE:修改记录
  • DELETE:删除记录
  • GRANT:赋予用户特权
  • REVOKE:收回用户特权

三,SQL语句实例

3.1 SQL基础语句

CREATE

创建数据库 并启用数据库

CREATE DATABASE testdb;
use testdb;

创建数据库表以及表内的列

CREATE TABLE offices (officeCode INT,city VARCHAR(10),phone INT,addressLine VARCHAR(20));

INSERT

向表中添加数据

INSERT INTO offices (officeCode, city, phone, addressLine) VALUES (1, 'japan', 12345678, 'addressLine1');
INSERT INTO offices (officeCode, city, phone, addressLine) VALUES (2, 'Germany', 123456789, 'addressLine2');

SELECT

查询当前表内容

select * from offices;

UODATE

修改表中数据 并查询结果
UPDATE offices SET city='China' WHERE officeCode=1;

DELETE

删除表中某条数据并查询结果

DELETE from offices where officecode=8;


3.2 SQL高级语句

当前数据库中offices表内容

排序 order by

SELECT * FROM offices ORDER BY phone;

分组 group by

先排序后分组 必须要有聚合函数 sum() count() avg()来配合才能使用

SELECT city,COUNT(*) FROM offices GROUP BY city;

限定条数 limit

第一个参数是偏移量 第二个参数是数目

SELECT * FROM offices limit 0,3;
SELECT * FROM offices limit 1,4;

联合查询 union select

SELECT * FROM offices UNION SELECT 1,2,3,4;


多种条件执行顺序

首先通过group by 进行分组  再通过HAVING筛选 筛选条件为:每组price的累加的值大于100

最后通过order by 对累加值 进行排序 最后输出查询结果


四,基于SQL注入理解语法/函数

4.1 语法

ORDER BY

如果 列表字段有 id user phone 三个字段

SELECT * FROM offices ORDER BY 1;查询该表所有字段 通过第一列officeCode排序

SELECT * FROM offices ORDER BY 2;查询该表所有字段 通过第二列city排序

SELECT * FROM offices ORDER BY 3;查询该表所有字段 通过第三列phone排序

SELECT * FROM offices ORDER BY 4;查询该表所有字段 通过第四列addressLine排序

SELECT * FROM offices ORDER BY 5;

如果 查询第五个不存在的字段 就会报错 通过这一点也能判断出 该表有几个字段

UNION SELECT

在联合查询中 通过构造语句 可直接否认之前的查询 执行通过union后查询的语句

在使用 UNION 运算符进行联合查询时,两个 SELECT 语句的列数、数据类型和顺序必须严格匹配。这是因为 UNION 会将两个查询的结果合并在一起,并去除重复的行,如果两个 SELECT 查询返回的列不匹配,数据库就无法正确执行这个操作。

需要注意的是查询的列应当和之前对应( 因为原查询语句与union查询的四个值的结果集合并 所以原字段有4个 联合查询必须也要有4个位置的值)可以理解为通过union可以猜字段数 如果查询的数量与列数相等了才会输出 否则报错

select * from offices where officeCode=1 and 1=1 union select 1,2,3,4;

使用and 一假则假的方式 否认union前查询语句 否认后 执行union后的查询语句 查询内容输出到每一个列名下  每一个联合查询值要对应一个列 

select * from offices where officeCode=1 and 1=2 union select 1,2,3,4;

知道列名后 就可以通过联合查询把相应列的值暴出来 (说是知道列名就行 但是我看查询语句必须在后面输入表名)

select * from offices where officeCode=1 and 1=2 union select city,2,3,4 from offices;


4.2 函数

exists()

通过exists()函数猜解表名 

该函数用于检查子查询是否至少会返回一行数据 实际上不返回任何数据 而是返回True或者False

select * from offices where city="china" and exists(select * from offices);


select * from offices where city="china" and exists(select * from officess);

load_file()

结合load_file()读取服务器文件内容

select * from offices where officeCode=1 and 1=1 union select 0,0,0,load_file("D:/test.txt") from offices;

我这个没读取到 不知道什么原因估计是mysql配置的原因 靶场都是正常成功的


五,目录数据库infomation_schema

在mysql 5.5以上版本中自带 infomation_schema数据库 保存着该服务器维护的所有数据库 表 列信息等等

通过联合查询暴所有数据库 

通过联合查询 暴testdb数据库的所有表

select * from offices where city="china" and 1=2 union select table_name,table_schema,0,0 
from information_schema.tables where table_schema="testdb" ;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++之算术生成算法

C之算术生成算法 accumulate #include<iostream> using namespace std; #include<vector> #include<numeric>void test() {vector<int> v;for (int i 0; i < 10; i){v.push_back(i);}int total accumulate(v.begin(), v.end(),0);cout << t…

车规激光雷达再商用车前装市场的应用

1、商用车需要什么样的激光雷达 2、如何实现车规级&#xff08;商用车&#xff09;的激光雷达 3、激光雷达安装部署方案

【源码】医院安全(不良)事件管理系统,11种不良事件类型,覆盖全院全部科室及所有可能发生的不良事件

医疗不良事件报告系统旨在建立全面的、统一的医疗不良事件标准分类系统和患者安全术语&#xff0c;使不良事件上报管理更加标准化和科学化。 通过借鉴国内外医疗不良事件报告系统的先进经验&#xff0c;根据医疗不良事件的事件类型、处理事件的不同部门&#xff0c;灵活设置上报…

【我的创作纪念日】

机缘 大家好&#xff0c;我是圥忈ゼ&#xff0c; 2023 年 07 月 20 日&#xff0c;我撰写了第 1 篇技术博客&#xff1a;《我的编程未来规划》&#xff0c;也是由于我高考后的专业选择&#xff0c;和就业方向的选择&#xff0c;加上想立志成为一名专业 IT 作者&#xff0c;我结…

蓝桥杯每日一题2023.11.26

题目描述 奖券数目 - 蓝桥云课 (lanqiao.cn) 将每一个数字进行一一枚举&#xff0c;如果检查时不带有数字4则答案可以加1 #include<bits/stdc.h> using namespace std; int ans; bool check(int n) {while(n){if(n % 10 4)return false;n / 10; }return true; } int m…

京东秒杀之秒杀详情

1 编写前端页面&#xff08;商品详情&#xff09; <!DOCTYPE html> <head><title>商品详情</title><meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /><script type"text/javascript" src&…

drool 7 multiThread 测试

基本信息 通过option &#xff0c;使用如下代码进行设置 //线程数量10MaxThreadsOption optionMaxThreadsOption.get(10);kieBaseConf.setOption(option);kieBaseConf.setOption(MultithreadEvaluationOption.YES);并发是以CompositeDefaultAgenda/Rule为颗粒度来的&#xff0…

世微AP5125 DC-DC降压恒流 LED车灯电源驱动IC SOT23-6

产品描述 AP5125 是一款外围电路简单的 Buck 型平均电流检测模式的 LED 恒流驱动器&#xff0c;适用于 8-100V 电压范围的非隔离式大功率恒流 LED 驱动领域。芯片采用固定频率 140kHz 的 PWM 工作模式&#xff0c; 利用平均电流检测模式&#xff0c;因此具有优异的负载调整 率…

【微服务】java 规则引擎使用详解

目录 一、什么是规则引擎 1.1 规则引擎概述 1.2 规则引擎执行过程 二、为什么要使用规则引擎 2.1 使用规则引擎的好处 2.1.1 易于维护和更新 2.1.2 增强应用程序的准确性和效率 2.1.3 加快应用程序的开发和部署 2.1.4 支持可视化和可管理性 2.2 规则引擎使用场景 三、…

如何在C/C++中测量一个函数或者功能的运行时间(串行和并行,以及三种方法的实际情况对比)

本文算是一个比较完整的关于在 C/C 中测量一个函数或者功能的总结&#xff0c;最后会演示三种方法的对比。 最常用的clock() 最常用的测量方法是使用clock()来记录两个 CPU 时间点clock_t&#xff0c;然后做差。这个方法的好处在于非常简单易写&#xff0c;如下&#xff08;第…

在龙蜥 anolis os 23 上 源码安装 PostgreSQL 16.1

在龙蜥 OS 23上&#xff0c;本来想使用二进制安装&#xff0c;结果发现没有针对龙蜥的列表&#xff1a; 于是想到了源码安装&#xff0c;下面我们列出了PG源码安装的步骤&#xff1a; 1.安装准备 1.1.创建操作系统组及用户 groupadd postgres useradd -g postgres -m postgr…

10、静态数码管显示

数码管介绍 LED数码管:是一种简单、廉价的显示器&#xff0c;是由多个发光二极管封装在一起组成“8”字型的器件 数码管引脚的定义 共阴极、共阳极 例如&#xff1a;显示数字1&#xff08;b,c段&#xff09; 3、8&#xff1a;接VCC或者GND/低电平 10011111 0110000 共阴极、…

Vue框架学习笔记——条件渲染:v-show和v-if

文章目录 前文提要条件渲染v-showv-ifv-else-if和v-else特殊写法&#xff0c;很多个一致的v-if如何消除 总结 前文提要 本人仅做个人学习记录&#xff0c;如有错误&#xff0c;请多包涵 主要学习链接&#xff1a;尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 条件渲染 条…

百度人工智能培训第一天笔记

参加了百度人工智能初步培训&#xff0c;主要是了解一下现在人工智能的基本情况&#xff0c;以便后续看可以参与一些啥&#xff1f; 下面就有关培训做一些记录&#xff0c;以便后续可以继续学习。 一、理论基础部分 二、实际操作部分 主要学习的百度人工智能平台如下&#xf…

蓝桥杯-平方和(599)

【题目】平方和 【通过测试】代码 import java.util.Scanner; import java.util.ArrayList; import java.util.List; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此…

利用STM32和蓝牙模块构建智能物联网设备的开发指南

智能物联网设备在现代生活中扮演着重要的角色&#xff0c;而STM32微控制器和蓝牙模块则为实现智能物联网设备提供了基础支持。本文将介绍如何使用STM32微控制器和蓝牙模块构建智能物联网设备的开发指南&#xff0c;包括硬件设计、蓝牙模块配置、传感器数据采集和云平台连接等关…

Uni-app智慧工地可视化信息云平台源码

智慧工地的核心是数字化&#xff0c;它通过传感器、监控设备、智能终端等技术手段&#xff0c;实现对工地各个环节的实时数据采集和传输&#xff0c;如环境温度、湿度、噪音等数据信息&#xff0c;将数据汇集到云端进行处理和分析&#xff0c;生成各种报表、图表和预警信息&…

数据可视化:在Jupyter中使用Matplotlib绘制常用图表

Matplotlib是一个强大的数据可视化库&#xff0c;用于创建各种图表。 在Jupyter中使用Matplotlib可以轻松实现折线图、柱状图、散点图和饼图等常用图表。 本篇文章将为你详细讲解用matlpotlib绘制常用图表的方法。 1、折线图 折线图是展示数据趋势和变化的常见图表类型。 …

设计问卷调查问题的技巧二:确定问题的结构与顺序

上篇文章中&#xff0c;我们了解到设计问卷调查问卷的技巧有保持问题中立、少用开放式问题、保持全名平衡的答案集、谨慎设置单一回答。在这篇文章中&#xff0c;我们将继续深入探讨设计问卷调查问题的剩余5大技巧&#xff01; Tip5&#xff1a;注意问题的顺序 虽然您可以任意…

【Linux】 file命令使用

file命令 file命令用于辨识文件类型。 语法 file [参数] [文件名] who命令 -Linux手册页 命令选项及作用 执行令 file --help 执行命令结果 参数 -b  列出辨识结果时&#xff0c;不显示文件名称&#xff1b;-i&#xff1a;显示MIME类型&#xff1b;-z&#xff1a;对…