当前位置: 首页 > news >正文

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" ;

相关文章:

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

目录 一,数据库概述 1.1 数据库 1.2 了解 ACID 理论 1.3 识别数据库 二,SQL 语法基础 三,SQL语句实例 3.1 SQL基础语句 3.2 SQL高级语句 四,基于SQL注入理解语法/函数 4.1 语法 4.2 函数 五,目录数据库info…...

Blazor Select 实现点击一次选项触发一次后台事件

Blazor的官方案例中,Select组件只有两个事件 1、OnSelectedItemChanged 每次选项的时候改变触发,如果你点击同一个选项是不会触发后台的方法的 2、OnBeforeSelectedItemChange 我们可以用这个事件实现每次点击同一个选项都可以触发后台事件 需要注意下最…...

只会在终端使用Python运行代码?这些高级用法了解了解

大部分同学在终端使用Python可能只是简单的执行代码,但其实结合一些Python内置模块或第三方库可以实现更高级且便捷的用法,一起看看吧 插播,更多文字总结指南实用工具科技前沿动态第一时间更新在公粽号【啥都会一点的研究生】 代码Benchmar…...

图论 2023.11.27

Kruskal定义不同的优先级 P3623 [APIO2008] 免费道路 给定一个无向图&#xff0c;其中一些边是0&#xff0c;其他边为1 两个不同的点之间都应该一条且仅由一条边连接 并保持刚好K条0&#xff0c;求是否有解决方案 n<2e4,m<1e5 Kruskal定义不同的优先级 思路&#xff1a;…...

蓝桥杯day02——Fizz Buzz

1、题目 给你一个整数 n &#xff0c;找出从 1 到 n 各个整数的 Fizz Buzz 表示&#xff0c;并用字符串数组 answer&#xff08;下标从 1 开始&#xff09;返回结果&#xff0c;其中&#xff1a; answer[i] "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。answer[i] &…...

socket 一个完整的不错的示例

从客户端向服务器端发送信息时&#xff0c;在服务器端有打印显示&#xff1b; 检测环境常用&#xff0c;备份一下 0&#xff0c;公共头文件代码 //config.h#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #inc…...

第10关:基数排序

任务要求参考答案问答98 任务描述相关知识 基数排序算法编程要求测试说明 任务描述 本关任务&#xff1a;实现基数排序算法&#xff0c;并将乱序数列变成升序。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.基数排序算法。 基数排序算法 基数排序是按…...

torch::和at:: factory function的差別

torch::和at:: factory function的差別 前言torch::autograd::THPVariable_randtorch::rand_symintat::rand_symintdemotorch命名空間at命名空間 前言 >>> import torch >>> a torch.rand(3, 4) >>> a.requires_grad False >>> a torch…...

与珎同行录-开篇-231129

与珎同行录-开篇 珎就是对陪伴并帮助我写代码的AI的昵称 能不能读懂这个绕口令问题呢? 连续的椎体的相邻椎体质心的相邻质心的质心作为当前质心所在的椎体的质心, 该质心的方向代表该椎体的上下方向 如何代码实现呢? 还是没看懂…好吧最终的算法是:...

linux logrotate日志轮询设置案例一

1.编辑/etc/logrotate.conf文件&#xff0c;添加如下配置&#xff0c;并保存 /var/log/ztj.log {missingokhourlycreate 644 root rootsharedscriptspostrotateif [ -f /var/run/syslogd.pid ];then/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid) >/dev/null 2>&…...

Android 12.0 禁用adb reboot recovery命令实现正常重启功能

1.前言 在12.0的系统rom定制化开发中,在定制recovery模块的时候,由于产品开发需要要求禁用recovery的相关功能,比如在通过adb命令的 adb reboot recovery的方式进入recovery也需要实现禁用,所以就需要了解相关进入recovery流程来禁用该功能 2.禁用adb reboot recovery命令…...

使用Jmeter进行http接口测试

前言&#xff1a; 本文主要针对http接口进行测试&#xff0c;使用Jmeter工具实现。 Jmter工具设计之初是用于做性能测试的&#xff0c;它在实现对各种接口的调用方面已经做的比较成熟&#xff0c;因此&#xff0c;本次直接使用Jmeter工具来完成对Http接口的测试。 一、开发接口…...

Linux内存管理(六十三):ION 内存管理器——cma heap

源码基于:Linux 5.4 约定: 芯片架构:ARM64内存架构:UMACONFIG_ARM64_VA_BITS:39CONFIG_ARM64_PAGE_SHIFT:12CONFIG_PGTABLE_LEVELS :3ION 系列博文: ION 总篇ION —— cma heapION —— system heap0. 前言 ION 是 Google 在 Android 4.0 中引入,目的主要是通过在硬件…...

条形码格式

条形码格式 简述EAN码EAN-13EAN-8 UPC码UPC-AUPC-E CODE128 简述 EAN码 EAN码&#xff08;European Article Number&#xff09;是国际物品编码协会制定的一种全球通用的商用条码。EAN码分为&#xff1a;标准版&#xff08;EAN-13&#xff09; 和 缩短版&#xff08;EAN-8&am…...

Java通过Redis进行延时队列,定时发布消息(根据用户选择时间进行发布)

前言 目前很多产品都用到过定时发布或者定时推送等功能&#xff0c;定时推送有两种定义&#xff0c;一种是后台自己有相关规则&#xff0c;通过定时器设置好相应的时间进行推送(例如定时任务框架QuartZ、xxl-job等实现,或者通过springboot自带定时任务Scheduled注解等实现)&am…...

从 0 搭建 Vite 3 + Vue 3 Js版 前端工程化项目

之前分享过一篇vue3+ts+vite构建工程化项目的文章,针对小的开发团队追求开发速度,不想使用ts想继续使用js,所以就记录一下从0搭建一个vite+vue3+js的前端项目,做记录分享。 技术栈 Vite 3 - 构建工具 Vue 3 Vue Router - 官方路由管理器 Pinia - Vue Store你也可以选择vue…...

【论文阅读笔记】Smil: Multimodal learning with severely missing modality

Ma M, Ren J, Zhao L, et al. Smil: Multimodal learning with severely missing modality[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2021, 35(3): 2302-2310.[开源] 本文的核心思想是探讨和解决多模态学习中的一个重要问题&#xff1a;在训练和测…...

在Windows系统上安装git-Git的过程记录

01-上git的官网下载git的windows安装版本 下载页面链接&#xff1a; https://git-scm.com/downloads 选择Standalone Installer的版本进行下载&#xff1a; 这里给大家一全git-2.43.0的百度网盘下载链接&#xff1a; https://pan.baidu.com/s/11HwNTCZmtSWj0VG2x60HIA?pwdut…...

qt QString常用方法

1. QString 尾部拼接,尾部插入字符.调用append()函数.同时,QString字符串直接用加号 也可以进行拼接. QString s "我的女神";s s "刘亦菲";s "最近可好?";s.append("你跑哪儿去了?");//拼接结果: 我的女神刘亦菲最近可好?你跑…...

吴恩达《机器学习》10-6-10-7:学习曲线、决定下一步做什么

一、学习曲线 1. 学习曲线概述 学习曲线将训练集误差和交叉验证集误差作为训练集实例数量&#xff08;m&#xff09;的函数绘制而成。这意味着从较少的数据开始&#xff0c;逐渐增加训练集的实例数量。该方法的核心思想在于&#xff0c;当训练较少数据时&#xff0c;模型可能…...

Nunchaku-flux-1-dev在Ubuntu20.04上的部署教程:完整安装指南

Nunchaku-flux-1-dev在Ubuntu20.04上的部署教程&#xff1a;完整安装指南 想快速体验AI大模型的强大能力&#xff1f;本文将手把手带你完成Nunchaku-flux-1-dev模型在Ubuntu20.04系统上的完整部署&#xff0c;从零开始到成功运行&#xff0c;小白也能轻松搞定。 1. 环境准备与系…...

WPF (容器控件6)UniformGrid控件在动态仪表盘设计中的实战应用

1. 为什么UniformGrid是动态仪表盘的绝佳选择 第一次接触WPF动态仪表盘开发时&#xff0c;我尝试过用StackPanel和Grid控件来布局数据卡片。StackPanel虽然简单&#xff0c;但无法实现多行多列对齐&#xff1b;Grid控件功能强大&#xff0c;但每次新增指标都要手动调整行列定义…...

保姆级教程:手把手教你为ROS机器人定制Rviz多目标点导航插件(基于move_base)

从零构建ROS机器人专属Rviz导航插件&#xff1a;多目标点顺序导航实战指南 当你的ROS机器人需要在复杂环境中执行多点位任务时&#xff0c;一个可靠的多目标点导航插件能极大提升工作效率。本文将带你深入理解Rviz插件机制&#xff0c;并手把手教你如何基于开源代码定制适配自己…...

2025年Scratch图形化编程三级考试真题解析与备考策略

1. 2025年Scratch三级考试真题深度解析 最近帮几个小朋友准备Scratch三级考试&#xff0c;发现很多孩子做题时容易陷入"看着会做但总选错"的困境。就拿2025年6月这套真题来说&#xff0c;表面看都是基础题&#xff0c;但每道题都藏着几个易错点。比如第一题的多边形绘…...

告别代码移植烦恼:STM32CubeMX 6.4.0 + STM32F407ZGT6 + YT8512C PHY芯片的LWIP网络配置全攻略

STM32F407ZGT6与YT8512C PHY芯片的LWIP网络适配实战指南 当硬件工程师将开发板上的PHY芯片从常见型号更换为YT8512C时&#xff0c;许多基于标准模板的LWIP网络代码会突然失效。这不是代码本身的问题&#xff0c;而是PHY芯片差异导致的底层驱动不匹配现象。本文将深入剖析YT8512…...

Prompt 焚诀——一个模板,终结你和 AI 的所有沟通问题确

AI训练存储选型的演进路线 第一阶段&#xff1a;单机直连时代 早期的深度学习数据集较小&#xff0c;模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低&#xff0c;吞吐量极高&#xff0c;也就是“数据离…...

LangChain进阶(二)RAG与真实应用落地

RAG与真实应用落地...

从ESXi到vCenter:一个Trunk口的网络配置,如何影响你整个VMware虚拟化的稳定性?

从ESXi到vCenter&#xff1a;Trunk口网络配置如何重塑VMware虚拟化架构稳定性 在虚拟化环境中&#xff0c;网络配置往往是最容易被低估却影响最深远的环节。许多管理员在部署VMware集群时&#xff0c;会本能地选择最简单的Access口配置——毕竟它能快速让系统跑起来&#xff0c…...

源码级交付的低代码革命:基于 Spring Boot 的 AI 视频中台二次开发实战

引言&#xff1a;从“项目定制”到“产品化”的跨越之痛 作为一名在安防行业摸爬滚打多年的架构师&#xff0c;我深知行业内的一个悖论&#xff1a;客户想要的是“开箱即用”的成熟产品&#xff0c;而现实场景却要求“千企千面”的深度定制。传统的开发模式下&#xff0c;为了满…...

从GNS3到真实网络:手把手教你用Wireshark抓包分析思科路由协议(OSPF/EIGRP实战)

从GNS3到真实网络&#xff1a;手把手教你用Wireshark抓包分析思科路由协议&#xff08;OSPF/EIGRP实战&#xff09; 在网络工程师的成长道路上&#xff0c;理解路由协议的底层工作原理是突破技术瓶颈的关键一步。而GNS3与Wireshark的组合&#xff0c;就像给网络学习者配备了一台…...