当前位置: 首页 > news >正文

14、SQL注入——HTTP文件头注入

文章目录

  • 一、HTTP Header概述
    • 1.1 HTTP工作原理
    • 1.2 HTTP报文类型
    • 1.3 较重要的HTTP Header内容
  • 二、HTTP Header注入
    • 2.1 HTTP Header注入的前提条件
    • 2.2 常见的HTTP Header注入类型

一、HTTP Header概述

1.1 HTTP工作原理

在这里插入图片描述

1.2 HTTP报文类型

(1)请求报文
由客户端发给服务器得消息,其组成包括请求行、请求头域和请求体。
在这里插入图片描述
HTTP请求方法

  • GET :请求指定得页面信息,并返回实体主体。
  • HEAD:类似GET请求,只不过返回得响应中没有具体内容,用户获取报头。
  • POST:向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改。
  • PUT:从客户端向服务器传送的数据取代指定的文档内容。
  • DELETE:请求服务器删除指定的页面。
  • CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  • OPTIONS:允许客户端查看服务器的性能。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断。
  • PATCH:是对PUT方法的补充,用来对已知资源进行局部更新。

(2)响应报文
由服务器回复给客户端得消息,其组成包括状态行、响应头域和响应体。
在这里插入图片描述
在这里插入图片描述

  • 文件夹存在响应码:403,文件夹不存在响应码:404
  • 文件存在响应码:200,文件不存在响应码:404
  • 3XX:跳转,判断可有可无(不能放过)。
  • 5XX:内部错误、服务器问题,判断可有可无(不能放过)。

1.3 较重要的HTTP Header内容

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

二、HTTP Header注入

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

2.1 HTTP Header注入的前提条件

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

2.2 常见的HTTP Header注入类型

(1)Cookie注入
常见场合:服务器对cookie字段进行获取,以验证客户端的身份。
在这里插入图片描述

(2)Referer注入
常见场合:服务器记录referer字段用于统计网站的点击量。
在这里插入图片描述

(3)User-Agent注入
常见场合:1)服务器记录访问者的信息,如浏览器版本、操作系统版本等;2)服务器根据User-Agent提供的信息来给客户端推送不同的网页。
在这里插入图片描述
User-Agent注入的sql语句一般使用insert语句,例如sqli-labs的Less-18后端语句:
inset into security.uagents('uagent','ip_address','username') values ('$uagent','$ip','$uname')
其实也可以根据报错信息来判断后端语句:
在这里插入图片描述
故,注入后语句应该为:
在这里插入图片描述

(4)XFF注入
常见场合:一些网站的防注入功能会记录客户端真实IP地址并写入数据库。
在这里插入图片描述

可以在原时的HTTP请求包中添加头部字段X-Forwarded-For

http://www.lryc.cn/news/257358.html

相关文章:

  • 李宏毅bert记录
  • .Net6.0 Microsoft.AspNetCore.Http.Abstractions 2.20 已弃用
  • c2-C语言--指针
  • kafka入门(四):消费者
  • DFS、BFS求解leetcode图像渲染问题(Java)
  • 0基础学习云计算难吗?
  • 【RabbitMQ高级功能详解以及常用插件实战】
  • 开源的数据流技术,该选择Redpanda还是Apache Kafka?
  • 720度vr虚拟家居展厅提升客户的参观兴致
  • mysql中的DQL查询
  • 【数据结构高阶】红黑树
  • Unity中Batching优化的GPU实例化(1)
  • vue的data
  • Java基础课的中下基础课04
  • 解决vue ssr服务端渲染运行时报错:net::ERR_PROXY_CONNECTION_FAILED
  • APIFox:打造高效便捷的API管理工具
  • 半导体划片机助力氧化铝陶瓷片切割:科技与工艺的完美结合
  • java访问数据库的库和API概述
  • 如何实现远程公共网络下访问Windows Node.js服务端
  • Java架构师系统架构设计服务拆分应用
  • 盛域宏数合伙人张天:AI时代,数字化要以AI重构
  • Vue自定义指令插槽作用域插槽具名插槽
  • WIFI直连(Wi-Fi P2P)
  • 基于Spring+Spring boot的SpringBoot在线电子商城管理系统
  • 【稳定检索|投稿优惠】2024年光电信息与机器人发展国际会议(ICOIRD 2024)
  • 《python每天一小段》-- (11)操作 Excel 详解
  • 一文读懂MySQL基础知识文集(8)
  • 持续集成交付CICD: Sonarqube REST API 查找与新增项目
  • 分层网络模型(OSI、TCP/IP)及对应的网络协议
  • 如何衡量和提高测试覆盖率?