0x01 前言
某狗可谓是比较好绕过的waf,但是随着现在的发展,某狗也是越来越难绕过了,但是也不是毫无办法,争取这篇文章给正在学习waf绕过的小白来入门一种另类的waf绕过。某狗可谓是比较好绕...
环境的搭建:
环境的搭建就选择phpstudy2018+安全狗最新版(2022年10月23日前)
Tip:
(1)记得先在phpstudy的Apache的bin目录下初始化Apache服务,一般来说,第一次为询问是否确认,第二次为确认安装(命令:httpd.exe -k install -n apache2.4 用管理员打开)
(2)上传防护中把完整的post包过滤勾选上。
0x02 HTTP补充:
分块传输的介绍:
分块传输编码是超文本传输协议(HTTP)中的一种数据传输机制,允许HTTP由应用服务器向客户端发送的数据分成多个部分,在消息头中指定 Transfer-Encoding: chunked 就表示整个response将使分块传输编译来传输内容。一个消息块由n块组成,并在最后一个大小为0的块结束。
请求头Transfer-encoding:
官方文档:
告知接收方为了可靠地传输报文,已经对其进行了何种编码。
chunked编码,使用若干个chunk串连接而成,由一个标明长度为0的chunk表示解释,每个chunk分为头部和正文两部分,头部内容定义了下一行传输内容的个数(个数用16进制来进行表示)和数量(一般不写数量,但是为了混淆,这里还是把数量写上去)正文部分就是指定长度的实际内容。两部分之间用(CRLF)来隔开,在最后一个长度为0的chunk中表示结束。并且长度中是以;作为长度的结束
数据包中添加:Transfer-Encoding: chunked
数字代表下一行的字符所占位数,最后需要用0独占一行表示结束,结尾需要两个回车
当设置这个Transfer-Encoding请求头的时候,会有两个效果:
Content-length字段自动忽略
基于长久化持续推送动态内容(不太了解,但是第三感觉有研究内容)
HTTP持久化连接:
因为现在大多数是http1.1协议版本,所以的话,只在Transfer-Encoding中定义了chunked一种编码格式。
持久化连接:
Http请求是运行在TCP连接上的,所以自然有TCP的三次握手和四次挥手,慢启动的问题,所以为了提高http的性能,就使用了持久化连接。持久化连接在《计算机网络》中有提及。在Http1.1的版本中规定了所有连接默认都是持久化连接,除非在请求头上加上Connection:close。来关闭持久化连接。
Content-Type介绍:
Content-Type:互联网媒体类型, 也叫MIME类型,在HTTP的协议消息头中,使用Content-Type来表示请求和响应中的媒体数据格式标签,用于区分数据类型。
常见Content-Ty