【SQL注入-12】http头部注入案例—基于Sqli-labs靶机(借助BurpSuite工具)

2023-11-19


本博客内容仅供学习探讨,请勿滥用乱用

1 概述

http头部注入是指注入字段在http请求头中的字段中,这些字段通常有User-Agent和Referer等。

1.1 User-Agent概述

User-Agent:是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。用较为普通的一点来说,是一种向访问网站提供客户所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识。

UA字符串在每次浏览器 HTTP 请求时发送到服务器!浏览器UA 字串的标准格式为: 浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 、渲染引擎标识、 版本信息。

User-Agent注入:User-Agent 注入其原理也和平时的注入一样,只不过说我们是将提交的参数以 User-Agent 的方式提交,属于http头部注入的一种。

1.2 Referer 概述

Referer :是 HTTP 请求头的一部分,当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里有包含 Referer 。比如我在www.sojson.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header 信息里就有:Referer=https://www.sojson.com。

Referer 的作用:指示当前请求是从哪里链接过来

Referer 注入:referer注入其原理也和平时的注入一样,只不过说我们是将提交的参数以referer的方式提交,属于http头部注入的一种。

一般的注入我们是使用get或者post方式提交:

  • get方式提交就是直接在网址后面加上需要注入的语句;
  • post则是通过表单方式,
  • get和post的不同之处就在于一个我们可以通过IE地址栏处看到我们提交的参数,而另外一个却不能。

2 实验平台及实验目标

2.1 实验平台

(1)靶机:——虚拟机(IP为172.16.1.1):本节实验靶场是在win2008系统上基于phpstudy搭建的一个sqli-labs漏洞靶场,win2008及phpstudy的安装过程可以参考《【语言环境】WAMP环境部署及优化—以win2008R2SP1为操作系统》,sqli-labs漏洞靶场的搭建可以参考《【环境搭建】基于WAMP环境的sqli-labs漏洞靶场的搭建

(2)注入机:——kali虚拟机,为了方便发送Cookie,本实验利用BurpSuite来进行注入实验,BurpSuite的安装过程可以参考文章《【Burp Suite工具-1】BurpSuite简介及安装过程详解(含please supply the following JVM argument错误提示原因)》。

(3)靶机与kali虚拟机桥接到同一局域网中。

2.2 实验目标

获取网站后台数据库账号及密码。

3 User-Agent注入案例—以sqli-labs-Less18为例

3.1 注入前准备

(1)打开靶机虚拟机,并打开phpstudy,并启动。
在这里插入图片描述

(2)kali虚拟机上打开火狐浏览器,并使用火狐浏览器的访问靶机sqli-labs的Less18,打开页面如下。

在这里插入图片描述

(3)输入账号密码为Dumb,点击登录,出现以下页面:
在这里插入图片描述

(4)kali虚拟机,设置火狐浏览器的使用代理功能。设置步骤如下:单击浏览器右上角“菜单图标”,依次单击“Settings”→“Settings”→“设置网络代理”→“设置”→“手动配置代理”,示, 设置HTTP代理为127.0.0.1 , 端口为8080 ,与Burp Proxy 中的代理一致。

在这里插入图片描述
在这里插入图片描述
(5)kali虚拟机打开BurpSuite,进入Proxy工具,在BurpSuite工具的intercept界面开启 intercept is on,刷新第3步的页面,让BurpSuite获取到请求,将请求右键发送到repeater工具,点击forward。
在这里插入图片描述

3.2 判断注入点及注入类型

正常流程应该是先判断能否在常规位置进行注入,实在没有的情况下再找http头部信息能否注入,本节实验省去了测试其他位置能否注入的过程,仅为演示如何进行user-agent注入。
(1)在BurpSuite的Repeater工具中,我们可以看到刚刚发送过来的请求,点击发送,可以看到响应中有user agent 的信息,因此猜测该字段内容可以回显到页面上,可能存在注入。
在这里插入图片描述
(2)回到repeater界面,对请求进行编辑,user-agent信息修改为test,测试响应是否能回显该处内容。可以看到正常显示。
在这里插入图片描述

(3)修改参数为test'时,系统出现错误提示。由此我们猜测是因为多了一个单引号引起引号未正常闭合的情况。与以往不同的时,这里的错误语句还出现了一串包括IP和账号在内的其他语句,我们可以猜测,系统将该语句拼接到我们注入参数后一并执行。
在这里插入图片描述
(5)修改参数为test'#时。#是为了注释掉单引号’后面的原sql语句,看看能否正常执行。发现还是报错,主要由于172.16.1.10', 'Dumb')这一部分是原sql语句内容,这部分内容不能省略。由于不能省略,则这部分内容也需要做一个闭合。
在这里插入图片描述

(6)修改参数为test' and '1'='1,and后面的恒等式是为了给172.16.1.10', 'Dumb')也做一个闭合。发现程序正常运行,说明该参数确实是单引号闭合字符型注入。
在这里插入图片描述
结论:该参数注入信息会回显到响应中,是一个注入点,且该参数为为单引号闭合的字符型注入。且会显示报错信息,因此可以采用报错注入。因此在进行注入时,首先要判断是否是一个注入点,然后关键判断属于数值型注入,还是字符型注入,若为字符型注入,是单引号闭合还是双引号闭合,且闭合方式如何拼接,最后判断可以采用哪种手法进行注入。

3.3 获取库名表名字段名字段内容

(1)获取库名。修改参数为test' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1此处在语句最后加上了一个恒等式,一方面是为了闭合后台语句的单引号,另一方面是为了保证当我们语句拼接入后台后不影响后续语句的运行,这是该闭合方式比采用#号等方式的高明之处。通过该参数,我们爆出了该网站所在数据库名。
在这里插入图片描述

(2)获取表名。修改cookie参数为test' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema = database() ),0x7e),1) and '1'='1,共爆出4个表名,其中users是我们所要的目标。
在这里插入图片描述

(3)获取字段名。修改参数为test' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema = database() and table_name = 0x7573657273),0x7e),1) and '1'='1,响应如下,共爆出3个字段名。
在这里插入图片描述

(4)获取用户数量。考虑到updatexml()函数回显字符长度有限,先获取用户数量,再逐个获取用户名与密码。修改参数为test' and updatexml(1,concat(0x7e,(select count(username) from users),0x7e),1) and '1'='1,响应中错误提示如下,可知共有14个用户。
在这里插入图片描述

(5)获取第一个用户账号及密码。修改参数为test' and updatexml(1,concat(0x7e,(select concat(id,0x3a,username,0x3a,password) from users limit 0,1),0x7e),1) and '1'='1,响应中错误提示如下,可知第一个账号密码均为Dumb,剩余账号密码只需修改limit参数便可逐个取出。注意,updatexml()函数报错信息最长只能显示32个字符,当内容字符数大于32个时,需要用字符截取函数一部分一部分截取,比如substr()。
在这里插入图片描述

3.4 实验结果

(1)实验成功爆出网站后台数据库账号及密码。
(2)实验关键在于构建能够闭合引号的注入参数。

4 Referer注入案例—以sqli-labs的Less19为例

4.1 注入前准备

(1)打开靶机虚拟机,并打开phpstudy,并启动。
在这里插入图片描述

(2)kali虚拟机上打开火狐浏览器,并使用火狐浏览器的访问靶机sqli-labs的Less19,打开页面如下。
在这里插入图片描述
(3)输入账号密码为Dumb,点击登录,出现以下页面:
在这里插入图片描述

(4)kali虚拟机,设置火狐浏览器的使用代理功能。设置步骤如下:单击浏览器右上角“菜单图标”,依次单击“Settings”→“Settings”→“设置网络代理”→“设置”→“手动配置代理”,示, 设置HTTP代理为127.0.0.1 , 端口为8080 ,与Burp Proxy 中的代理一致。

在这里插入图片描述
在这里插入图片描述
(5)kali虚拟机打开BurpSuite,进入Proxy工具,在BurpSuite工具的intercept界面开启 intercept is on,刷新第3步的页面,让BurpSuite获取到请求,将请求右键发送到repeater工具,点击forward。
在这里插入图片描述

4.2 判断注入点及注入类型

正常流程应该是先判断能否在常规位置进行注入,实在没有的情况下再找http头部信息能否注入,本节实验省去了测试其他位置能否注入的过程,仅为演示如何进行referer注入。
(1)在BurpSuite的Repeater工具中,我们可以看到刚刚发送过来的请求,点击发送,可以看到响应中有referer的信息,因此猜测该字段内容可以回显到页面上,可能存在注入。
在这里插入图片描述
(2)回到repeater界面,对请求进行编辑,referer信息修改为test,测试响应是否能回显该处内容。可以看到正常显示。
在这里插入图片描述

(3)修改参数为test'时,系统出现错误提示,由此我们猜测是因为多了一个单引号引起引号未正常闭合的情况。与以往不同的时,这里的错误语句还出现了一串包括IP和账号在内的其他语句,我们可以猜测,系统将该语句拼接到我们注入参数后一并执行。
在这里插入图片描述

(4)修改参数为test' and '1'='1,and后面的恒等式是为了给172.16.1.10', 'Dumb')也做一个闭合。发现程序正常运行,说明该参数确实是单引号闭合字符型注入。
在这里插入图片描述
结论:该参数注入信息会回显到响应中,是一个注入点,且该参数为为单引号闭合的字符型注入。且会显示报错信息,因此可以采用报错注入。因此在进行注入时,首先要判断是否是一个注入点,然后关键判断属于数值型注入,还是字符型注入,若为字符型注入,是单引号闭合还是双引号闭合,且闭合方式如何拼接,最后判断可以采用哪种手法进行注入。

4.3 获取库名表名字段名字段内容

获取库名。修改参数为test’ and updatexml(1,concat(0x7e,database(),0x7e),1) and ‘1’='1,此处在语句最后加上了一个恒等式,一方面是为了闭合后台语句的单引号,另一方面是为了保证当我们语句拼接如后台后不影响后续语句的运行,这是该闭合方式比采用#号等方式的高明之处。通过该参数,我们爆出了该网站所在数据库名。
在这里插入图片描述

获取表名字段名字段内容与3.3节类似,只是注入字段在refer中,因此此处不再一一赘述。

4.4 实验结果

(1)实验成功爆出网站后台数据库账号及密码。
(2)实验关键在于构建能够闭合引号的注入参数。

5 总结

(1)了解user-agent的组成与作用;
(2)掌握user-agent注入的方法。
(3)了解referer的含义与作用;
(4)掌握referer注入的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【SQL注入-12】http头部注入案例—基于Sqli-labs靶机(借助BurpSuite工具) 的相关文章

  • [NCTF2019]SQLi:regexp正则注入

    文章目录 题目 regexp正则注入 1 模糊注入 2 布尔盲注的regexp注入 3 盲注脚本 4 使用 00进行注释 总结 收获 参考 题目 登陆框 给出后台查询语句sqlquery select from users where us
  • 【网络运维与安全岗位】月薪2.5w,您还不知道的前景!

    一 为什么学网络安全 标重点 1 市场巨大 每年各安全厂商收入高达400亿左右 随着5G的发展 万物互联时代 市场将进一步扩大 2 薪资高 网安人才的匮乏 用人开出招聘薪资往往高于求职者的预期 3 靠能力说话 在网络安全专业 专业技能竞争力
  • 如何判断是字符型注入还是整形注入

    1 数字型注入 当输入的参数为整形时 如果存在注入漏洞 可以认为是数字型注入 测试步骤 1 加单引号 URL www text com text php id 3 对应的sql select from table where id 3 这时
  • 常见的SQL注入分类

    SQL注入分类 用SQLmap来判断 类别 按 SQLMap 分类SQL 注入类型有以下 5 种 1 UNION query SQL injection 可联合查询注入 2 Stacked queries SQL injection 可多语
  • sql注入详解

    sql注入详解 SQLI介绍 SQLI sql injection 我们称之为sql注入 sql Structured Query Language 叫做结构化查询语句 在我们的应用系统使用 sql 语句进行管理应用数 据库时 往往采用拼接
  • CTFHUB SQL注入——时间盲注 附自己写的脚本

    介绍 时间盲注和上一篇布尔盲注一样都是盲注 都需要借助length ascii substr这些神奇的函数来猜测各项信息 它们的差别是猜测成功的依据 布尔盲注的话如果查询有结果 一般会有一个success flag 比如在上一题里就会返回q
  • 深入解析sprintf格式化字符串漏洞

    深入解析sprintf格式化字符串漏洞 0x00 前言 从相遇到相识 从相识到相知 不过你真的懂ta吗 这次故事的主角是PHP中的格式化函数sprintf 0x01 sprintf 讲解 首先我们先了解sprintf 函数 sprintf
  • 宽字节注入讲解

    我讨厌现在的自己 一边压抑着自己的情绪 一边装作没事的样子 一到深夜就彻底崩溃了 天亮后还要微笑面对生活 网易云热评 一 原理 1 单字节字符集 所有的字符都使用一个字节来表示 比如 ASCII 编码 0 127 2 多字节字符集 在多字节
  • 基于Sqli-Labs靶场的SQL注入-17~22关

    目录 Less 17 基于POST请求方式的中级注入 爆破数据库名 爆破表名 爆破列名 爆破字段值 第十七关代码审计 Less 18 HTTP头部注入 UA注入 爆破数据库名 爆破表名 爆破列名 爆破字段值 HTTP头部注入判断方法 Les
  • python脚本实现sql时间盲注

    这里用sqli labs master第10关举例 1 爆数据库长度 coding utf 8 import requests import datetime import time 获取数据库名长度 def database len fo
  • sqli-labs Less-4

    本系列文章使用的靶场环境为sqli labs 环境下载地址 https github com Audi 1 sqli labs 持续跟新 一直到通过此靶场为止 1 判断注入类型 index php id 1 单引号回显正常 双引号会报错 然
  • 2022年江西省中职组“网络空间安全”赛项模块B-Web渗透测试

    2022年中职组山西省 网络空间安全 赛项 B 8 Web渗透测试任务书 B 8 Web渗透测试解析 不懂可以私信博主 一 竞赛时间 420分钟 共计7小时 吃饭一小时 二 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第 阶段
  • MYSQL HTTP头部注入

    HTTP头部基础 Accept 浏览器能够处理的内容类型 Accept Charset 浏览器能够显示的字符集 Accept Encoding 浏览器能处理的压缩编码 Accept Language 浏览器当前设置的语言 Connectio
  • SQL注入---联合注入

    Union联合注入攻击 1 联合注入的思路 会显示输出内容时 才考虑使用Union注入 可以在输入框中或者 URL 中输入内容 如果不能在输入框内输入内容 则需要使用 Burp suite 使用 重发器 修改 id 中的内容进行爆破数据 l
  • 渗透测试——万能密码与POST注入

    1 万能密码的原理 数据库没有对前端输入的参数的合法性做过率 并且账号和密码 一起输入 可以通过编写恶意语句 将用户与密码的输入结果判断为真 就实现了万能密码的登录 2 万能密码实例 查询语句select from KaTeX parse
  • sqli labs less 25

    按照常规输入id 1 提示报错信息如下 一个很常见的报错 可以看出是单引号闭合的语句 输入 id 1 or 1 报出的错误信息不明显 加入一个括号进行试探能不能报出更多的语句错误 输入 id 1 or 1 从上图看出来or 被屏蔽了 经过更
  • SQL中的and、or

    在sql查询语句中长用到and和or 它们在用的时候有些需要注意的地方 不管在一项表达式中有多少个and或or 它是将前一个表达式看作一项 and与or后的所有表达式看做一项 and的前后都为真的时候才为真 取交集 or有一个为真 即为真
  • 无痕渗透“INSERT INTO”型SQL注入

    原文链接 http www mathyvanhoef com 2011 10 exploiting insert into sql injections html 在某个寂静的深夜 你徘徊在一个网站中 其中包含一个可提交form 需要你输入
  • union(联合)注入和布尔注入

    没有很快乐 也没有不快乐 好像不该这样 但也只能这样 成长也许如此 行于奔溃边缘又慢慢自愈吧 网易云热评 一 union联合注入 1 select 1 2 3会生成一张临时表 表中的字段为查询的字段 内容也是查询的字段 2 select 1
  • 渗透测试——cookie注入

    1 cookie注入原理 Cookie最先是由Netscape 网景 公司提出的 Netscape官方文档中对Cookie的定义是这样的 Cookie是在HTTP协议下 服务器或脚本可以维护客户工作站上信息的一种方式 Cookie的用途非常

随机推荐

  • Leetcode646. 最长数对链

    Every day a Leetcode 题目来源 646 最长数对链 解法1 动态规划 定义 dp i 为以 pairs i 为结尾的最长数对链的长度 初始化时 dp 数组需要全部赋值为 1 计算 dp i 时 可以先找出所有的满足 pa
  • 阿里云 linux 的nginx 配置uni-app的H5前端项目vue,后端接口阿里云。

    背景 vue项目调用接口是阿里云的 H5网站也要部署到阿里云 2个不同的服务器 需要做nginx部署与api代理 1 端口配置 首先当然是买个阿里云服务器 这里是配置是linux系统 配置访问的域名 再接着 给网站配置需要的端口 如下 配置
  • Git工具使用全解

    Git工具使用全解 文章目录 Git工具使用全解 1 企业开发中的版本控制器 2 Git工具的使用场景 3 Git工具操作流程 三板斧操作 4 Git工具的安装与常用命令 4 1 Git的安装 4 2 Git基本操作指令 5 Git工具常见
  • 2023/2/14 大数据实习日志

    今日学习内容 一 VMware虚拟机安装部署CentOS7 链接 VMware虚拟机安装部署CentOS7 Moba远程连接 克隆 步骤 二 Docker入门 第一章内容 什么是docker 为什么使用docker docker与虚拟化 牛
  • python: SHA256算法的实现和消息的哈希散列值计算

    目录 1 SHA256 2 实现原理 2 1 消息预处理 2 2 使用的常量和循环移位函数 2 3 主循环 3 结果 4 对中文编码 1 SHA256 SHA256是SHA 2下的一个子算法 与之类似的还有SHA224 SHA384 SHA
  • ChatGPT爆火,对制造业销售增长的AI建议

    北京时间2023年2月8日 微软宣布推出由ChatGPT支持的最新版本人工智能搜索引擎Bing 必应 和Edge浏览器 ChatGPT的问世再次掀起AI热潮 接下来让我们一起试试与ChatGPT对话 看看传说中上知天文下知地理的他是如何回答
  • ChatGPT驱动下,网站AI客服该如何进步和创新

    在ChatGPT这个AI智能的驱动下 网站AI客服在进步和创新方面有很多潜力 由于GPT模型的强大语言处理能力和智能对话技巧 使得网站AI客服能够更准确和流畅地与用户交互 looklook今天总结了一些网站AI客服智能的进步和创新方向 以供
  • PLSQL安装步骤

    1 安装 下载PLSQL安装包 解压 默认安装 选择自己需要的版本安装 一路默认即可 2 添加客户端路径 解压instantclient 11 2 rar 放到自定义目录下 我是放在D盘下的Tools目录 没有配置客户端 是无法登陆的 所以
  • 什么是LLM大语言模型?

    什么是LLM大语言模型 大语言模型 英文 Large Language Model 缩写LLM 也称大型语言模型 是一种人工智能模型 旨在理解和生成人类语言 它们在大量的文本数据上进行训练 可以执行广泛的任务 包括文本总结 翻译 情感分析等
  • 美化你的Typora —— 关于MarkDown文档和newsprint.css的一点折腾

    这篇文章起源于我想美化一下Markdown样式 我在Typora官方的newsprint风格的基础上对其css进行了一系列的微调 提升了美观度和易用性 解决了如图像缩放分辨率降低 中英文字体设置等问题 文章目录 0 美化前后效果对比 1 代
  • [转] 解读IntelliJ IDEA的优缺点

    昨天去TW参加了pre class 就是类似于新员工入职前的培训 有很多很cool的东西 给我印象最深的就是IntelliJ IDEA了 coder么 刚才在网上搜了搜 发现很少有她的介绍资料 所以贴过来一个让大家看看 文章中有一句话值得大
  • ucGUI3.9版本快速移植构建

    ucGUI3 9版本快速移植构建 移植前提条件 涉及文件 移植过程 修改绘制驱动文件 修改配置文件 打包进工程 涉及的资源获取 在之前的博客中移植了STemwin5 32版本的 最近更换了 GD芯片所以STemwin没法用了 只有移植emw
  • LeetCode:三数之和&四数之和

    1 方法概述 1 前期处理 三数之和用三个指针 四数之和用四个指针 最开始都要进行从小到大的排序 2 粗处理 编写三数之和的时候第一个指针刚开始指向所给数组的第一个元素 第二个指针记为L指针 初始指向第一个指针所指元素的下一个元素 第三个指
  • 福兔迎春,春节快乐

  • ajax异步问题导致的刷新页面数据不更新

    ajax的async默认的设置值为true 这种情况为异步方式 就是说当ajax发送请求后 在等待server端返回的这个过程中 前台会继续 执行ajax块后面的脚本 直到server端返回正确的结果才会去执行success 也就是说这时候
  • Unity飞船摄像机360度环绕(逐步完善)

    极简版 目标飞船 public Transform target 摄像机距离 public float distance 100 void Update float mouseX Input GetAxis Mouse X float mo
  • Nginx知识总结

    1 简介 Nginx engine x 是一个高性能的HTTP和反向代理web服务器 同时也提供了 IMAP POP3 SMTP服务 Nginx是由伊戈尔 赛索耶夫为俄罗斯访问量第二的 Rambler ru站点开发的 第一个公开版本0 1
  • matlab制作旋转动态图,matlab 如何画动态图(绘图与旋转视图)

    效果图 在matlab中 作图是重要的一部分 那么对于三维的图像 如何将静态的改为动态的呢 首先 静态图的代码 t 0 0 1 20 i 1 200 这里只是画了一个点 而 绘图 效果图 在matlab中 作图是重要的一部分 那么对于三维的
  • docker compose 部署skywalking

    文章目录 前言 架构图 docker compose 脚本 整合springboot 前言 SkyWalking 是一个开源的 APM 系统 核心功能如下 服务 服务实例 端点指标分析 根本原因分析 服务拓扑图分析 服务 服务实例和端点依赖
  • 【SQL注入-12】http头部注入案例—基于Sqli-labs靶机(借助BurpSuite工具)

    目录 1 概述 1 1 User Agent概述 1 2 Referer 概述 2 实验平台及实验目标 2 1 实验平台 2 2 实验目标 3 User Agent注入案例 以sqli labs Less18为例 3 1 注入前准备 3 2