这在http协议中也是个常见的字段,用于http传送过程的分块技术,原因是http服务器响应的报文长度经常是不可预测的,使用Content-length的实体搜捕并不是总是管用。
分块技术的意思是说,实体被分成许多的块,也就是应用层的数据,TCP在传送的过程中,不对它们做任何的解释,而是把应用层产生数据全部理解成二进制流,然后按照MSS的长度切成一分一分的,一股脑塞到tcp协议栈里面去,而具体这些二进制的数据如何做解释,需要应用层来完成。
简而言之,就是把数据包分成一块一块的丢过去,骗骗死脑筋的WAF。
0x05 分块传输开启绕过
手工进行分块绕过较为繁琐,且花费时间长,面对大量资产的情况,项目时间较为紧张的情况下,还是使用自动化工具来的快捷方便。这里使用sqlmap+burp+burp插件(chunked-coding-converter)。祭出我二表哥工具的项目地址:https://github.com/c0ny1/chunked-coding-converter。快速使用:burp获取post包后,复制post包,做成post.txt,并放置于sqlmap工具文件下。(忽略在下负一级的打马赛克技术)
使用burp 设定插件,开启插件代理:
使用Sqlmap进行代理:sqlmap语句sqlmap.py -r post.txt –proxy=:8080 –os-shell
什么?为什么不继续了?因为客户不让了,表演结束了,谢谢大家。
0x06 让我再多说一句
当然为了更加快速化,和方便快捷一步到位,可使用sqlmap参数batch自动进行注入。
sqlmap.py -r post.txt –proxy=:8080 –batch
当当然,我们再可以提高速度,进行一步到位,可使用sqlmap参数threads提高并发数。
sqlmap.py -r post.txt –proxy=:8080 –batch –threads 10
当当当然可以修改sqlmap配置文件将默认最高10改成9999,具体根据现场实际情况进行修改。
Sqlmap配置文件settings.py,将MAX_NUMBER_OF_THREADS = 9999。
多线程sqlmap效果如下:
Ok,以上是面对大量资产绕过waf进行注入的姿势。