IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【SQL注入-12】http头部注入案例—基于Sqli-labs靶机(借助BurpSuite工具) -> 正文阅读

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


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

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注入的方法。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:27:36  更:2022-05-08 08:28:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 11:13:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码