CDN 负载均衡、内容分发
解析漏洞一般在服务层 二进制,溢出,提权在系统层 渗透测试就是以上全部层
协议未正确解析
GET改POST 这叫参数污染
cookie 改一个较大的值 有的waf承受不了这么大的值,参数污染
HTTP参数污染 HPP参数污染 使用多个无用值或者重复值提交到数据包中达到攻击
提交两个filename值,这要看具体什么服务器,两个一样的参数是哪一个参数生效
waf有正则匹配拦截,我们要找到拦截点在哪里。绕过waf就是在绕过写好的正则。
单双引号,不加引号,后缀,各种尝试绕过
正则的核心在匹配filename后面的值,思路是让它找不到匹配点。
直接绕过
SQL注入
union select 1,2,3 只要不报错可以继续往后加 union select 's','s','s' 字母也可以
表里没有3条数据,这时个时候查询 id=3;返回空值。所以要用union select联合查询查到报错来摸清数据库里面有多少条数据。
如果前面id=-1这里的条件不符合,它就返回后面的union select数据了,利用这个唯一的返回结果就可以加自己的东西来回显了。
可以调用数据库的全局变量
查看数据库名
在数据库里面可以返回三条,但在页面中不会显示三条的。使用limit
limit 0,1 从0开始取一条,返回一条
查询这个表来看当前用户的权限是什么
只要字典强大就可以获得当前数据库的用户名
聚合函数,当前表里有多少记录就返回多少
统计列数
这个表是存在的,穷举表
穷举字段
布尔值盲注 age字段18的值,拿第一个字符,返回1,以下为嵌套函数。
数字,字母穷举都可以,单引号被过滤就必须用到ASCII码了。
时间盲注
这个函数直接就解析了
过狗
and int = int就会拦截 and 字符 = 字母就不会拦截 字符串 = 函数 是不拦截的
union 和 select 在一起的时候才会拦截 用大小写,URL编码等尝试
注释绕过
写个脚本测试payload,waf的正则匹配的东西太多了,用脚本跑到没有被拦截到的点
id=2 UNION/**/SELECT 1,2,3 把空格用SQL注释符号替换的思路,厂家也清楚,/**/里面加东西,或者用SQL不会执行的特性来绕过他们编写的正则匹配规则,将是重要的测试点。
学语言写脚本,这里就需要用上了。 大致叫做 Fuzz 模糊测试 绕过waf PKAV团队应该有一个这个软件
这里推荐一篇脚本的参考资料:https://blog.csdn.net/JBlock/article/details/88617906