【网络安全】waf绕过--打狗棒法

本文介绍了如何通过分块传输和Content-Type中的boundary边界混淆来绕过WAF的防御,详细讲解了分块传输的工作原理、HTTP持久化连接以及Content-Type的使用,特别是multipart/form-data的边界问题。通过实例展示了如何利用这些技术绕过SQL注入和文件上传的WAF检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值