四、一些绕过技术
11、分块传输绕过
11.1、定义
分块传输(也称为Chunked Transfer Encoding)是一种HTTP协议的特性,它允许将HTTP响应分成多个块进行传输,而不是一次性传输整个响应。这在某些情况下可以提高性能和响应时间。然而,攻击者有时会尝试利用分块传输来绕过一些安全控制,包括防止SQL注入攻击。
11.2、使用
在HTTP头部,使用Transfer-Encoding: chunked
来表示启用了分块传输。分块传输的响应数据被分为一系列块,每个块包括块大小的16进制表示和块的实际数据,最后以一个大小为0的块作为结束。手工的话,得自己计算,可以使用burpsuite
的插件可以帮助我们自动分块。
利用burpsuite
自动分块插件操作步骤如下,以sqli-labs的第11关为列
12、白名单绕过
有些waf会自带一些文件白名单,对于白名单waf不会拦截任何操作,所以可以利用这个特点。
白名单通常有目录
/admin
/phpmyadmin
/admin.php
13、静态文件绕过
除了白名单和目录外,还有一些waf并不会对静态文件进行拦截。如图片文件jpg、png、gif、或者css、js 会对这些静态文件的操作不会进行检测从而绕过waf拦截
14、pipline绕过注入
注入的时候需要发送两个请求包,第一个请求包中是含有sql注入的包,第二个包是正常的请求包,第一个包的Connection
字段,将close状态改为keep-alive
状态,利用burpsuite
操作
绕过原因:有些waf会检测第二个包,不会对第一个包的参数进行检测,这样就可以绕过一些waf拦截
15、宽字节过滤
宽字节使用的函数addslashes()
,该函数在指定的预定义字符前添加反斜杠。这些字符是单引号'
、"
、\
和NUL
(NULL字符)。
要求,当前数据库的编码方式为GBK编码,构造方式,在单引号等之前加上%df
,以sqli-labs32关为列
常规注入,发现单引号无法闭合
利用宽字节注入后:反斜杠失去了转义的作用,单引号起到了闭合的作用