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.rhkb.cn/news/205532.html

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

相关文章

[MySQL-基础]SQL语句

目录 hello! 这里是欧_aita的频道。 今日语录: 只有放弃才是真正的失败。 祝福语:愿你的代码生活充满注释,逻辑清晰,debug之路畅通无阻。 大家可以在评论区畅所欲言,可以指出我的错误,在交流中共同进步。 欢迎关注我的…

【刷题】DFS

DFS 递归: 1.判断是否失败终止 2.判断是否成功终止,如果成功的,记录一个成果 3.遍历各种选择,在这部分可以进行剪枝 4.在每种情况下进行DFS,并进行回退。 199. 二叉树的右视图 给定一个二叉树的 根节点 root&#x…

Linux 常用基本命令

文章目录 7.1 帮助命令7.1.1 man 获得帮助信息7.1.2 help 获得shell内置命令的帮助信息7.1.3 常用快捷键 7.2 文件目录类7.2.1 pwd 显示当前工作目录的绝对路径7.2.2 ls 列出目录的内容7.2.3 cd 切换目录7.2.4 mkdir 创建一个新的目录7.2.5 rmdir 删除一个空的目录7.2.6 touch …

2023 最新 PDF.js 在 Vue3 中的使用

因为自己写业务要定制各种 pdf 预览情况(可能),所以采用了 pdf.js 而不是各种第三方封装库,主要还是为了更好的自由度。 一、PDF.js 介绍 官方地址 中文文档 PDF.js 是一个使用 HTML5 构建的便携式文档格式查看器。 pdf.js 是社区…

短 URL 生成器设计:百亿短 URL 怎样做到无冲突?

Java全能学习面试指南:https://javaxiaobear.cn 我们先来看看,当高并发遇到海量数据处理时的架构。在社交媒体上,人们经常需要分享一些 URL,但是有些 URL 可能会很长,比如: https://time.geekbang.org/hyb…

分割掩模 VS 掩膜

掩膜 Mask分割掩模 Segmentation Mask总结示例 掩膜 Mask “掩膜” 是指一种用于 标识或遮蔽图像中特定区域 的 图像。 在图像处理中,掩膜通常是一个 二值图像,其中的 像素值为 0 或 1。binary Mask 叫做二元掩膜,如下图所示: 这…

bugku 渗透测试

场景1 查看源代码 场景2 用dirsearch扫描一下看看 ok看到登录的照应了第一个提示 进去看看 不出所料 随便试试admin/admin进去了 在基本设置里面看到falg 场景3 确实是没啥想法了 找到php在线运行 检查网络,我们发现这个php在线运行会写入文件 那我们是不是写…

智能优化算法应用:基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.回溯搜索算法4.实验参数设定5.算法结果6.参考…

Vue19 列表过滤

直接上代码 以下代码使用了两种实现方式&#xff0c;监视属性和计算属性 当能用计算属性实现时&#xff0c;推荐使用计算属性 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>列表过滤</title><script type&q…

三十、elasticsearch集群

目录 一、集群的概念 1、节点 2、索引 3、分片和副本 二、集群的架构 三、集群的部署方式 1、单主节点 2、多主节点 3、安全集群 四、搭建ES集群 1、elasticsearch中集群节点有不同的职责划分 2、elasticsearch中的每个节点角色都有自己不同的职责&#xff0c;因此…

git stash save untracked not staged

git stash save untracked not staged 如图 解决方案&#xff1a; git stash save "tag标记信息" --include-untracked或者&#xff1a; git stash save -u "tag标记信息" git stash clear清空本地暂存代码_zhangphil的博客-CSDN博客文章浏览阅读486次。…

如何用CHAT写“科技探索者”视频号运营方案

问CHAT&#xff1a;生成一篇“科技探索者”视频号运营方案&#xff0c;要求内容&#xff1a; &#xff08;1&#xff09;视频号的定位、面向的人群、主要发布哪方面的内容 &#xff08;2&#xff09;视频号的内容设计&#xff08;用什么样的方式来体现、最好有内容创意&#xf…

YOLOv8改进 | 2023 | DWRSeg扩张式残差助力小目标检测 (附修改后的C2f+Bottleneck)

论文地址&#xff1a;官方论文地址 代码地址&#xff1a;该代码目前还未开源&#xff0c;我根据论文内容进行了复现内容在文章末尾。 一、本文介绍 本文内容给大家带来的DWRSeg中的DWR模块来改进YOLOv8中的C2f和Bottleneck模块&#xff0c;主要针对的是小目标检测&#xff0c…

基于社区电商的Redis缓存架构-缓存数据库双写、高并发场景下优化

基于社区电商的Redis缓存架构 首先来讲一下 Feed 流的含义&#xff1a; Feed 流指的是当我们进入 APP 之后&#xff0c;APP 要做一个 Feed 行为&#xff0c;即主动的在 APP 内提供各种各样的内容给我们 在电商 APP 首页&#xff0c;不停在首页向下拉&#xff0c;那么每次拉的…

在虚拟机搭建nignx,和使用本地访问nginx的情况

下载nginx yum install nginx 查看nginx是否安装成功。 nginx -v nginx的配置文件的目录和资源的目录。 先到nginx.conf的目录下&#xff0c;在 /etc/nginx/nginx.conf&#xff0c;编辑它。 vi /etc/nginx/nginx.conf 可以看到默认的html的目录。在 /usr/share/nginx/html 下面…

牛客网刷题笔记四 链表节点k个一组翻转

NC50 链表中的节点每k个一组翻转 题目&#xff1a; 思路&#xff1a; 这种题目比较习惯现在草稿本涂涂画画链表处理过程。整体思路是赋值新的链表&#xff0c;用游离指针遍历原始链表进行翻转操作&#xff0c;当游离个数等于k时&#xff0c;就将翻转后的链表接到新的链表后&am…

mybatis参数输入 #{}和${}

1、建库建表 CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id) );INSERT INTO t_emp(emp_name,emp_salary) VALUES("tom",200.33); INSERT INTO…

Linux使用宝塔面板+Discuz+cpolar内网穿透工具搭建可公网访问论坛

Linux宝塔面板搭建Discuz论坛&#xff0c; 并内网穿透实现公网访问 文章目录 Linux宝塔面板搭建Discuz论坛&#xff0c; 并内网穿透实现公网访问前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Di…

智慧城市内涝积水监测仪功能,提升城市预防功能

内涝积水监测仪不仅改变了人们应对城市内涝的老办法&#xff0c;还让智慧城市往前迈了一大步。这个监测仪是怎么做到的呢&#xff1f;就是靠它精准的数据监测和预警&#xff0c;让城市管理有了更科学高效的解决妙招。它就像有了个聪明又负责任的助手&#xff0c;让城市管理更加…

SAP 调取http的x-www-form-urlencoded形式的接口

一、了解下x-www-form-urlencoded形式对于SAP来说有啥区别 简单来说&#xff0c; 1.raw格式就是标准的json格式&#xff1a;{“Name”:“John Smith”&#xff0c;“Age”: 23} 2.x-www格式是要转化一下的&#xff1a;NameJohnSmith&Age23 字段与字段相互连接要用 & 符…