写了很久,一直没时间发。原谅这段时间的懒散和不定期更新。 年后继续干货。
从wooyun找到了绕过waf的技术分为9类包含从初级到高级技巧:
a) 大小写混合
b)替换关键字
c)使用编码
d)使用注释
e)等价函数与命令
f)使用特殊符号
g)HTTP参数控制
h)缓冲区溢出
i)整合绕过
二次编码不知现在还行不行,因为大部分的WAF都会将编码还原,至于现在有没有多次解码进行还原就不得而知了?
And 1=1 被拦截。
/**/和/!**/注释也不用看了,肯定也是被拦截。。
由于它是匹配正则的,那么ok。我们加以变形。
最后面绕过的语句是:
http://192.168.122.129/1.php?id=1/*|%23--%23|*/and/*|%23--%23|*/1=1
这里写了一个黑名单检测的文件上传脚本
选择一个木马上传则发现被拦截。
我们用burpsuite重新抓包上传…编码问题懒得调整了。
我尝试将数据包里面的一些请求头大小写,发现还是被拦截。但是如果用特殊字符呢?比如中间多一个空格、tab制表符、回车等??
于是就发现了在filename = “miansha.php”这里,filename后面的位置加个回车变成:
如下图…..
放包,绕过了。。。
因为在http协议中以;号为结束某条语句,不找到;号,http协议是不会判断他结束的。
这个上传失败的原因是我后缀名用了白名单。
大致的思路就是对一些特征,也就是敏感函数的分割,打乱,编码,加密。从而绕过。。
比如用base64+正则或者base64+字符串函数
然后后面用create_function.
有些函数开发、正常业务要用到的,没法杀的。安全和业务的平衡点有时候让人很难取舍。
一口气写了三个,扫描下。