基于SQL注入漏洞的总结与归纳(个人学习 整理归纳复习

第一节 我们首先要知道什么是SQL注入漏洞

SQL注入常见的web漏洞,形成的主要原因是web应用程序在接收相关数据参数时未做好过滤,将其直接带入到数据库中查询,导致攻击者可以拼接执行构造的SQL语句。

像这样我们输入?id=1 我们可以获得id=1的信息 这就是sql注入漏洞,可以通过sql的命令行去后台直接查询信息

第二节 SQL注入的产生原因

原因:在前后端数据的交互中,前端的数据传到后台处理时,没有做严格的判断,导致其传入的数据拼接到SQL语句中,被当成SQL语句的一部分执行,从而导致数据库受损,信息丢失。就是后端对输入没有做出充分的过滤然后对非法的输入做出了反应。

第三节 对SQL注入漏洞的分析

如图所示 当我们输入?id=1时候

 

就会显示id=的一些具体信息 

为了让我更好的理解SQL注入的一些知识,我在网上下载了hackbar这款工具

从这里写命令行比较清晰

然后我们代开源代码的话  就是源码为哦

sql= 'select  * from users  where id='1 and 1=1 ' limit 0,1",

然后就是注入的时候分为字符型和数字型 

查询的时候输入的时候如果 输入1=1的时候正确,输入1=2时候报错的时候说明他是数字型

而当你输入的时候 1=1时候正确 1=2正确的时候一般就玮字符型,因为数字被''这种都东西所包裹住了 字符都是一样的

而且还有其他的方法 比如输入

输入2-1 如果出现的是2的用户的信息 那么就是字符型因为字符型没法检查数字运算

如果给出的是1的用户 那么说明就是数字型的输入 因为数字型的注入可以理解数字的运算

不用加号的原因 是因为有时候加号有可能会被认为是空格

第四节 如何判断闭合方式

数字型不需要闭合 而 字符型号可以闭合 闭合方式有 ' “ ‘) ")

怎么判断闭合方式  输入1’ 会发现这里提示1‘是异常,说明这里我们多输入了一个’值

我们再在盲注里面进行对比

当我们输入?id= 1‘的时候没有回显 报错

当我输入--+时候就是把后面的 代码全部都注释掉 那么我们可以知道闭合方式为单引号

不需要的语句可以通过 --+或者其他方式将后面代码注释掉或者#号键

漏洞的注入点

什么是注入点,就是可以注入的地方,可以连接数据库的地方

第五节 联合查询

用union 联合查询,需要保证查询的列数和世纪列数相一致,所以我们需要知道有几列,才能周联合查询

这里我们输入?id=1' group by 而不用order by 的原因是因为group by能绕过防火墙的检测
如上图所示我们输入4的时候有报错 那么我们尝试输入3

当我们输入3的时候有成功的输出 所以我们知道有三行

然后我们需要有展占位符

当我们少输入一位的时候就会报错

所以列位置必须占满

而且对于union来说 如果第一个运行成功的话,南无后面的指令将不再运行,所以我们使用

故意让第一个为-1,然后它就会执行后面的查询

位置可以不查询位置,但是不可以不用占位符

注入的基本过程

先开率字符型还是数字型,如果是字符型的就要考虑是否闭合,在注入 的时候最好使用group by因为能够绕过防火墙之类的设备

当我们想要查找table 的相关的信息

输入table_name 来自 information_schema.tables然后我们能获得一些挂关于数据库的命令

或者我们可以在最后加入 where tables_schema=database()--+ 有时候在最后加入一个函数可以绕绕过防火墙

函数group_concat

group_concat()的作用是确保所有查询的信息能放到一行来显示

就可以把我们想获取的信息全部提取出来

extractvalue报错注入

报错注入就是构造语句,让错误信息中夹杂可以显示数据库内镕的查询语句

因为有些时候这个成功的输入不会回复任何有用的信息

所以我们需要与引入报错注入

比如我们现在输入一个?id=1'报错,由上图我们可以知道这是个单引号的闭合方式

由此可知我们的列数为3列

我们主要是看报错信息来看有用的信息

我们故意输错database()输入成如图,因为 输入错误,所以我么不能可以通过这个方法获得当前数据库的名称为security

然后就是extractvalue报错注入

其实是来查询XML里面的内容

selct extractvalue(doc,/book/author/aurname') from xml

这是这个函数的查询方式

select extractvalue(doc,/book/author/title')from xml 查询书的名字

报错注入的突破口就是让页面上显示报错。

比如在本例中把查询参数的路径写错,页面上只会显示查询不到内容,但是不会报错。

但是如果把查询参数的格式符号写错,页面上就会提示出报错信息:

在实际的注入过程中,查询的列(比如本例中的doc)是不用管的,随便写就可以。因为我们关注的是后面查询的更重要的东西(database)

0x7e就是~,concat函数是拼接的作用。作用是在执行这条命令时遇到前面的飘号~(0x7e)从而引起报错。

然后我们这个

然后我们通过报错来获取我们所需要的

因为摄入量 0x7e是个'号,这个是不符合规定的所以引起了报错

所以能爆出我们所需要的信息

输入这个我们可以爆出表名

ubstring报错注入

updatexml(xml_doument,XPath_string,new_value)
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) 程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据

通extractvalue(),输入错误的第二个函数,让第二个函数报错,更改路径的函数

select updatexml(doc,。/book/auther/surname','1') from xml;

怎么利用呢,我们可以在第一个doc,'后面多加一个~然后让路径报错,就可以让回显,

我们拿less6来作比较

物品吗嗯首先应该确定闭合的的方式

如图所示 没有回显

如图所示爆出来了数据库当前的名称

 and updatexml(1,concat(0x7e,(select group_concat( table_name) from information_schema.tables where table_schema=database())),3)--+

爆出了表名

我们尝试爆出账户和密码

但是发现只能显示1-30个字符,不能完全的显示

substring控制字符输出

floor报错

select floor(rand()*2) from information_schema.tables随机报错出现我们需要的值

如果在rand()里面加入0数字,就会导致永久报错,所以可以出现回显

这个函数不是直接的调取命令

比如 select count(*),concat ws('-',(select database()),floor(rand(0)*2)) as a from users group by a;

我们是通过源文件的数据与0相减来实现的 造成键值冲突 就回将你想要的返回来 这里主要是使用键值冲突来造成错误返回的

架构体系是这样的·

报错的能展示64位

布尔盲注

当语句输入错误,和正确会有两种状态,

ascii()这个命令

?id=1' and ascii(select database()))=?--+

就是猜测是多少进行布尔注入 比如ascii(substr(select database()),1,1))>=115--+

?id=1' and ascii(subtr('abcd',1,1))>97--+

sql注入文件上传

用文件上传拿webshel

首先我们应该确认数据库是否拥有读写的权限

用show variables like '%secure";

点击实行 写着secure

_file_priv如果后面跟着为空,那么说明咱们对数据库拥有读写权,如果后面有具体的位置,意思是这个数据库只有在那个位置才有读取权限,如果为null,就意思是没有读写权限

intp outfile命令使用的环境 服务器上可以写入文件的文件上的完整路径

他明明不是双引号,却被判定为没有错误,这是因为双引号被夹在两个单引号中间,所以被判定为是正确的

经过试验,我们知道了这个闭合方式为单引号进行闭合

如此图为一句话木马

这里是上传木马

        into outfile 是显示插入的位置

然后我们就可以通过webshell工具来连接

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

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

相关文章

【QT+QGIS跨平台编译】之九:【LZ4+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、LZ4介绍二、文件下载三、文件分析四、pro文件五、编译实践一、LZ4介绍 LZ4是一种无损压缩算法,压缩速度为每核心400MB/s。 LZ4是目前效率最高的压缩算法,更加侧重于压缩/解压缩速度,压缩比并不突出,本质上就是时间换空间。 LZ4库是使用BSD许可证作为开放源码…

基于LLaMA-Factory的微调记录

文章目录 数据模型准备基于网页的简单微调基于网页的简单评测基于网页的简单聊天 LLaMA-Factory是一个非常好用的无代码微调框架,不管是在模型、微调方式还是参数设置上都提供了非常完备的支持,下面是对微调全过程的一个记录。 数据模型准备 微调时一般…

奔图P1家用激光打印机测评:小巧精致,高效便捷,开启打印新革命

在当今数字化时代,办公方式越来越灵活,日常学习也有很多作业、习题需要打印,无论是为了满足日常的学习、工作需求,还是为了追求个人兴趣、丰富业余生活,我们都离不开打印机的身影。打印机这个曾经被视为专业领域的设备…

每日一题——LeetCode2859.计算K置位下标对应元素的和

方法一 枚举法: 通过不断地将目标数值与 1 进行按位与操作,并根据结果判断最低位是否为 1,从而统计其中包含的 1 的个数。 如果1的个数等于K就加上该值。 var sumIndicesWithKSetBits function(nums, k) {function countOnes(num) {let cou…

mysql8版本批量造4000个数据SQL

需求: 测试工作中修改单需要构造单元下4000个组合的数据,写个博客来记录,其他类似的可以举一反三。 具体sql: 实现1个产品1个单元下插入4000个组合数据 思路: 在MySQL 8中实现循环插入4000条具有不同主键的记录&a…

老旧小区火灾频发,LoRa无线系统筑牢安全防线

近日,全国各地多个老旧小区火灾事故频发,从安微合肥南二环一老旧小区居民楼起火、上海金山区一小区居民楼火灾,到1月24日江西新余市特大火灾......都造成了不同程度的人员伤亡和财产损失,令人扼腕痛惜,教训十分深刻。 …

蓝牙----蓝牙协议栈Host层

蓝牙协议栈----Host层 蓝牙物理层基本信息链路层的状态机进入连接态的步骤主动扫描与被动扫描链路层通信模式 蓝牙地址蓝牙设备地址蓝牙标识地址蓝牙接入地址 蓝牙广播信道管理蓝牙数据信道跳频 蓝牙协议栈Host层包括PHY、LL、HCL层,注重关注PHY物理层和LL链路层。 …

电脑监控系统:企业网络安全解决方案

在当今数字化的世界里,企业的网络安全已经成为一项至关重要的任务。电脑监控系统作为一种有效的解决方案,正在被越来越多的企业所采用。 电脑监控系统是一种集成了多种安全功能的综合性解决方案,旨在为企业提供全面的网络安全防护。该系统能够…

JavaWeb01--Tomcat

1、JavaWeb概述 Web开发是基于请求和响应的: 请求:浏览器(客户端)向服务器发送信息 响应:服务器向浏览器回送信息 请求和响应是成对出现的。 Web资源分类 所谓Web资源即放在Internet网上供外界访问的文件或程序&#x…

31、WEB攻防——通用漏洞文件上传JS验证mimeuser.ini语言特性

文章目录 文件上传一、前端验证二、.user.ini 文件上传 检测层面:前端、后端等检测内容:文件头、完整性、二次渲染等检测后缀:黑名单、白名单、MIME检测等绕过技巧:多后缀解析(php5、php7)、截断、中间件特…

代码随想录算法训练营第十四天|二叉树基础-二叉树迭代-二叉树

文章目录 二叉树基础二叉树种类满二叉树完全二叉树二叉搜索树平衡二叉搜索树 二叉树的存储方式链式存储顺序存储 二叉树的遍历方式二叉树的定义 二叉树的递归遍历144.二叉树的前序遍历代码: 145.二叉树的后序遍历代码: 94. 二叉树的中序遍历代码 二叉树的…

「阿里云」幻兽帕鲁个人服务器已上线,3分钟快速搭建

基于阿里云搭建幻兽帕鲁服务器方法,1到2分钟部署完成,稳定运行无卡顿,阿里云服务器网aliyunfuwuqi.com分享保姆级手把手教程,基于阿里云计算巢、云服务器或无影云桌面都可以: 基于阿里云幻兽帕鲁服务器创建教程 基于…

EasyExcel实现导出图片到excel

pom依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version> </dependency> 实体类&#xff1a; package com.aicut.monitor.vo;import com.aicut.monit…

CSDN年度报告图片卡通小人收集

摘要&#xff1a;CSDN推出的年度报告真的太赞了&#xff0c;还定制了诸如“情感的编织者”“敏锐的激励者”“灵感的捕捉者”“组织的表达者”“洞悉的指挥家”“心灵的领航员”“生动的记录者”“温暖的叙述者”“理性的探索者”等等精准且浪漫的标签&#xff0c;加上非常有灵…

基于Java SSM框架实现在线考试系统项目【项目源码+论文说明】

基于java的SSM框架实现在线考试系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#…

modelscope下载模型

# 私有模型下载&#xff0c;前提是您有响应模型权限 方法1 git lfs install git clone http://oauth2:your_git_tokenwww.modelscope.cn/<namespace>/<model-name>.git 如何获取git token 用您的账号登录https://www.modelscope.cn &#xff0c;在个人中心->访…

正确看待华为鸿蒙……是盲目跟风吗?

先要了解纯血鸿蒙是什么&#xff1f;与之前的套壳Android版本区别在哪&#xff1f;了解这核心东西之后才会真正的看出“纯血鸿蒙”的未来与发展。 纯血鸿蒙全栈自研 HarmonyOS NEXT系统底座全线自研&#xff0c;去掉了传统的Linux内核以及AOSP等代码&#xff0c;仅支持鸿蒙内…

3分钟搭建幻兽帕鲁私服,无需任何命令代码,点点鼠标一键部署

想玩《幻兽帕鲁》和朋友们一起乐呵呵&#xff1f;这个指南教你怎么在阿里云上弄个游戏服务器&#xff0c;超简单。点几下鼠标&#xff0c;2、3分钟就搞定&#xff0c;不用头疼设置那些复杂的东西。一键部署幻兽帕鲁私服&#xff0c;告诉你私服怎么搭建 本次利用阿里云服务器的…

极限【高数笔记】

【分类】分为了两大类&#xff0c;一个是数列的极限&#xff0c;一个是函数的极限 【数列的极限】 1.定义&#xff1a; 简单来讲&#xff0c;就是&#xff0c;当n无限趋近于无穷时&#xff0c;数列{an}无限趋近一个常数A&#xff0c;此时&#xff0c;常数A就是它们此时情况下的…

springboot快速写接口

1. 建proj形式 name会变成文件夹的名字&#xff0c;相当于你的项目名称 基础包 2. 基础依赖 3. 配置数据库 这里要打开mysql&#xff0c;并且创建数据库 方法&#xff1a; 安装好数据库&#xff0c;改好账号密码用navicat来建表和账号配置properties.yml文件即可 4.用res…