我正在学习“利用HTTP请求走私绕过前端安全控制,TE.CL漏洞”,我发现长度可以设置为20、30等。在一定的范围内,我可以随意设置内容长度的值。


,我认为应该是6,对于"x=1\r\n0“应该是6,但是当内容长度设置为6时,响应结果是错误的。那么,如何计算这个内容长度的值呢?我没有在网上找到答案,有人能帮我吗,非常感谢
做了一个基于“”的S回答的测试,看起来这个测试有一个问题

我做了一个基于regilero的答案的测试,似乎存在一些问题


发布于 2023-01-10 13:24:28
当走私攻击发生时,会忽略块模式(适用CL:4)。所以我们删除前4个字节(71\r\n)。然后,您有一个新的请求,这是一个‘简单’的帖子。我不计算6个字符(也不算5个字符,因为x=1\r\n是5个),而是10个字符:
x=1\r\n
0\r\n
\r\n0\r\n\r\n是第一个请求块的末尾,但是对于没有问题的参与者,它只用作块的末尾,如果您有cl问题,那么这个块的结束现在是您身体的一部分,您需要将这5个字节添加到原来的主体大小中。
发布于 2022-12-29 07:07:27
内部请求的主体是x=1,而不是x=1\r\n0。相反,\r\n0是外部请求块编码的一部分:\r\n位于每个块的末尾,但不属于负载本身。下面的十六进制数字(和后面的\r\n)描述了下一个块的长度,即在最后一个块的情况下为0。有关分块编码的详细信息,请参见这里。
因此,内容长度应该是3。
注意,块之前给定的块大小应该反映块的实际大小。对于一个content-length: 30,这是114,也就是给出的71。对于一个content-length: 3,这需要调整到113,即十六进制70。
https://security.stackexchange.com/questions/267357
复制相似问题