0x00 什么是分块传输编码

好久没有更新博客了,最近比较忙,在这里道个歉

HTTP分块传输编码其实在年初的时候freebuf和安全科都已经科普过一次了

引用wiki百科中分块传输编码的定义:

分块传输编码(Chunked transfer encoding)是超文本传输协议(HTTP)中的一种数据传输机制,允许HTTP由網頁伺服器发送给客户端应用( 通常是网页浏览器)的数据可以分成多个部分。分块传输编码只在HTTP协议1.1版本(HTTP/1.1)中提供。

0x01 分块传输编码的格式

如果一个HTTP消息(请求消息或应答消息)的Transfer-Encoding消息头的值为chunked,那么,消息体由数量未定的块组成,并以最后一个大小为0的块为结束。

每一个非空的块都以该块包含数据的字节数(字节数以十六进制表示)开始,跟随一个CRLF (回车及換行),然后是数据本身,最后块CRLF结束。在一些实现中,块大小和CRLF之间填充有白空格(0x20)。

最后一块是单行,由块大小(0),一些可选的填充白空格,以及CRLF。最后一块不再包含任何数据,但是可以发送可选的尾部,包括消息头字段。

消息最后以CRLF结尾。

读完上述概念后,有几个知识点需要总结一下:

1、分块传输仅在HTTP/1.1版本中提供,作为一个"坏小子"第一时间想到的是否可进行Dos攻击,曾经确实有中间件处理不当存在Dos的例子

2、分块传输只能用在POST请求,显而易见GET请求中不包含任何内容,但是服务器对GET/POST返回响应中都可以使用分块传输。

0x02 分块传输编码扩展

在《图解HTTP》中对Chunked介绍如下图所示:
imgs

在RFC7230中的Chunked的介绍:
imgs

在wiki百科中的介绍:
imgs

我在本地的尝试

首先后端接受代码如下:
imgs

使用burpsuite构造请求如下:

imgs

如图所示,后端成功接受了参数

0x03 Hacking in Tools

sqlmap

感谢w8ay大佬对sqlmap的扩展

sqlmap -u "eval.com" --data="id" --chunked

imgs

burpsuite

感谢c0ny1大佬对burpsuite的扩展

https://github.com/c0ny1/chunked-coding-converter

imgs

编译好的1.0版本的jar文件

点我下载

发表评论

电子邮件地址不会被公开。 必填项已用*标注