解答网站内容优化策略,江苏大丰做网站,社区问答网站开发,wordpress当前文章标题前面写了WAF如何检测#xff0c;现在直接上WAF常见的一些绕过方法。
方法1:变换大小写
实例: 比如WAF拦截了union#xff0c;那就使用Union、UnloN等方式绕过。
方法2:编码绕过
实例1: WAF检测敏感字~#xff0c;则可以用Ox7e代替#xff0c;如extractvalue(1,concat(~… 前面写了WAF如何检测现在直接上WAF常见的一些绕过方法。
方法1:变换大小写
实例: 比如WAF拦截了union那就使用Union、UnloN等方式绕过。
方法2:编码绕过
实例1: WAF检测敏感字~则可以用Ox7e代替如extractvalue(1,concat(~.database())可以写成extractvalue(1,concat(Ox7e,database())).
实例2: WAF检测敏感字admin则可以用Ox61646d696e代替如select name,passfrom userswhere nameadmin可以替换成select name,pass from users where nameOx61646d696e.
实例3: WAF检测敏感字select,可以在URL中将select变成%73elEcT编码结合大小写变换绕过WAF。实例4:可以用%09、%0a、%0b、%Oc、%0d、%a0、!**1、/*somewords*/等来替换空格。
方法3:利用注释符 适用于WAF只过滤了一次危险的语句而没有阻断整个查询语句的场合。
实例: 原查询语句为:?id1 union select 1,2,3对于这条查询,WAF过滤了一次union和select我们可以用内敛注释符注释掉里面的过滤掉如?id1/*union*/union /*select*/select 1,2,3
方法4:重写 适用于WAF只过滤—次敏感字的情况。
实例: WAF过滤敏感字union但只过滤一次则可以写出类似ununionion这样的过滤一次union后就会执行我们的查询了:?id1 ununionion select 1,2,3
方法5:比较操作符替换 适用于某—比较操作符(如等号)被过滤的情况。
实例1: !不等于不等于小于大于这些都可以用来替换来绕过。 比如要判断某个值是不是74假设被过滤则可以判断是不是大于73是不是小于75,然后就知道是74了:/?id1 and ascii(lower(mid((select pwd from users limit 1,1),1,1))73 /?id1 and ascii(lower(mid((select pwd from users limit 1,1),1,1)))75
实例2: WAF将、、全部过滤则可以利用like来绕过如?id1 or 1 like 1
方法6:同功能函数替换 适用于某—函数被过滤的情况。
实例: 假如substring()被WAF过滤但substring()可以用同功能的mid()substr()等函数来替换都是用来取字符串的某—位字符的。 原查询语句: substring((select password),1,1) Ox70替换后的查询语句: substr((select password),1,1) Ox70mid((select password),1,1) Ox70
方法7:盲注的活用 适用于页面无回显或多种函数、逻辑运算符被过滤的情况。实例: strcmp(expr1,expr2)用来比较两个值如果expr1expr2,则函数返回0expr1expr2则返回-1,expr1expr2则返回1。 假如index.php?uid123页面返回是正确的但WAF过滤了and和or , 原查询语句index.php?uid123 and left((select hash from users limit 0,1),1)B可用
index.php?uidstrcmp(left((select hash from users limit 0,1).1),0x42)123来替换通过盲猜hash的第一位如果第一位等于Ox42也就是B那么strcmp()将返回00123123,所以页面应该是正确的。否则就说明不是B这样猜就不用and和or了.
方法8:二阶注入 所谓二阶注入(又称存储型注入是指已存储数据库、文件)的用户输入被读取后再次进入到SQL查询语句中导致的注入。 普通SQL注入: 发生在一个HTTP请求和响应中对系统的攻击是立即执行的: (1)攻击者在http请求中提交非法输入; (2)应用程序处理非法输入使用非法输入构造SQL语句;(3)在攻击过程中向攻击者返回结果。 二阶SQL注入: (1)攻击者在http请求中提交某种经过构思的输入 (2)应用程序存储该恶意输入(通常保存在数据库中以便后面使用并响应请求;(3)攻击者提交第二次不同的)http请求; (4)为处理第二次http请求程序会检索存储在数据库中的恶意输入并进行处理从而导致攻击者构造的SQL查询被执行; (5)如果攻击成功在第二次请求响应中向攻击者返回查询结果。
方法9:密字节注入 适用于数据库使用双字节编码方式(如GBK)、WAF利用AddSlashes()等函数对敏感字符进行转义的场景.