专栏首页E条咸鱼HTTP 头部信息注入小分析

HTTP 头部信息注入小分析

在开始正文之前,请允许我用我小学语文水平的语言组织能力来介绍一下何为HTTP头部信息 众所周知,在请求web服务器过程中,会发送一个HTTP包,为应用层的数据包,在数据包中,有web服务器的IP地址,还有你请求的网站路径、文件,其他的就是你(用户)的数据,具体有什么看WEB需要你给什么,一般来说有以下内容

  • 请求类型 分为POST/GET两种
  • User-Agent 用户浏览器标识
  • X-Forwarded-For 来源地址
  • Cookie 用于验证用户信息

具体数据包长什么样可以看下图

那么正题开始,解释了什么是HTTP包后,下面的内容应该不算是什么难以理解的内容,HTTP包有一个部分,叫做头部信息(heards),也就是上面提到的User-Agent这些,在有的环境中,php可能会将这部分的部分内容放到sql查询语句中配合使用,若是这部分没有加防范,那么就可以通过伪造headers头部信息来完成注入

HTTP头部注入我稍微的分了两个类 第一类为通过构造会记录下来验证身份的如X-FORWARDED-FOR这类来绕过/查询 第二类为构造用户使用的应用程序的信息和用户的IP地址这类来绕过/查询

举个第一类的简单的例子

--------分割线--------

下面是一条php中的sql查询语句

$useripaddr=$_SERVER['HTTP_X_FORWARDED_FOR']
$req=mysql_query("select user,password from users where user=’$username’ and password=’$password’ and get_ip=’$useripaddr’);

上面这个php代码,假如xff内容没有做防护的话,就会导致get_ip这一部分被恶意利用 只需要通过将x-forwarded-for内容更改、构造sql语句就好了 例如heards中,X_FORWARDED_FOR :127.0.0.1′ or 1=1# 这样一来,sql查询语句就变成了

select user,password from users where user=’$username’ and password=’$password’ and get_ip=’127.0.0.1' or 1=1#’

第二类的例子就比较麻烦了,因为能举例出来的环境太多,而我又太懒,所以下面给个环境,全靠脑补

第一个PHP名为login.php,用于验证登录信息后返回cookie值 第二个PHP名为value.php,用于输出什么无关紧要的内容

在login.php中,有这么一个操作,若是验证过了用户名密码后,生成一个cookie,然后发送给value.php用户身份验证

生成用户cookie值

setcookie('ant[uname]',$_POST['username'],time()+36000);
setcookie('ant[password]',sha1(md5($_POST['password'])),time()+36000);

Value.php中,有这么一串代码用于查看是否有用户登录的cookie存在

$user_cookie=connect(); #接收login.php发送过来的cookie
$exist_user=check_sqli_login($user_cookie); #验证内容
if(!$exist_user){ #若没有cookie存在,则跳转到上一个登录界面中
    header("location: login.php");
}

这类环境在进行查询或者写入操作时,会先判断你这个用户是否存在于数据库中,若存在,那么才会执行后面查询、写入这些操作

这种方法构造起来就更简单了,你只需要抓取一个登录成功的包,然后将用户名修改为sql注入语句 如 uname=admin 改为 uname=admin’ or 1=1# 这样sql语句就会被恶意注入成

select uname,password from users where username='admin'or 1=1#' and password='xxxxx';

于是就可以绕过了(这里是不正确示范,若真想万能密码绕过得输入一个不存在的用户名使其查询结果到or 1=1那边后得到结果为true就好了)

"头部注入秀就秀在他乱七八糟的"

本文分享自微信公众号 - E条咸鱼(gh_04d31a502ded),作者:现在你看到我的ID了

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 小记一个PHP不死马

    如同字面意思一样,不死马怎么样都不会给"杀死"的木马,他是直接写入进程中,无限在指定目录下生成木马文件

    Elapse
  • 一条payload发生的事情(来自对报错注入的思考)

    最近在重新整理复现MYSQL注入天书,遇到了一条很有意思的报错注入的payload:

    Elapse
  • 小记一次验证码绕过

    当时我的心里不是滋味,于是立马放下了手中的手机,摘掉了耳机,然后从床上爬起来,决定发奋图强,好好读书

    Elapse
  • 详解Flask中session与cookie的用法

    做过爬虫的朋友相信对 session 和 cookie 这两个东西非常的熟悉了,简单点说 cookie 是客户端用来标识用户信息的,session 是一种会话机...

    Python编程与实战
  • 小白学Flask第七天| 讲讲cookie和session的操作

    cookie和session都是web开发当中老生常谈的话题,我们首先来看看Flask当中cookie是如何使用的。

    Python进击者
  • SSO - 我们为何需要单点登录系统

    SSO,Single Sign On,也就是单点登录,保证一个账户在多个系统上实现单一用户的登录 现在随着网站的壮大,很多服务会进行拆分,会做SOA服务,会使用...

    风间影月
  • H.264、H.265当道,安防编解码标准SVAC2.0的突围之战

    标准推行,是个技术及各种因素博弈的过程。对于安防监控编解码标准SVAC2.0来说,其产品化和应用,才刚刚开始。

    AI掘金志
  • 007. 整数反转 | Leetcode题解

    假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

    苏南
  • 开源项目——『看知乎』iOS 版

    前段时间无意中发现了看知乎,一个知乎答案和用户的精选站。网站开发者是知乎用户苏莉安,他写了个爬虫从知乎抓取数据,而且还提供了 API 文档。我大致看了下文档,感...

    Sheepy
  • 再谈session 和 cookie的差异

    用户2141593

扫码关注云+社区

领取腾讯云代金券