vlambda博客
学习文章列表

SQL注入与SQL盲注漏洞

    今天呢我们来大概讲解一下位居web漏洞的top1

    SQL注入漏洞以及SQL盲注漏洞   

1、绕过WAF的方法

       1、大小写绕过

        2、简单编码绕过

        3、注入绕过

如:?id = 1 uni/**/on sele/**/ct 1,2,3 #

        4、分隔从写绕过

                适用于AWF采用正则表达式检测所有的敏感字的情况、可以通过注释分开敏感字,如:?id = 1 uni/**/on sele/**/ct 1,2,3 #;适用于WAF过滤了一次的情况,如uniunionon,有时候可能还有多次过滤的情况,这个时候也可以多次尝试,

        5、HTTP残酷污染(HPP)

                

例如?id=1 union select 1,2,3 from users where id =1 #

               

 这个时候可以改为?id=1 union select 1&id=2,3 from users where id=1 #

                次数&id= 会在查询时候变成逗号,具体细节取决于WAF;

         6、使用逻辑运算符 or/and 绕过

         

 例如:id=1 or 0x50=0x50

         7、比较操作符替换:比较操作符如:!=、、<>\、<、>都可以用来代替=来绕过

        8、同功能函数替换

            substring()可以用mid()\substr()这些函数来替换、都是用来取字符串的某一位字符的;

            ascii编码可以用hex、bin、即十六进制和二进制编码替换;

            在使用在基于延迟的盲注中bencrnark()和sleep()可以相互替换;

            group_concat\concat\concat_ws三者可以相互替换;

            还有一种新的方法,三条语句分别如下

            

substring((select 'password'),1,1)=0x70
substr((select 'password'),1,1) = 0x70
 mid((select 'password'),1,1) = 0x70

            都是从password里判断第一个字符的值,可以用

 strcmp(left('password',1),0x69)=1
strcmp(left('password',1),0x70)=0 strcmp(left('password',1),0x71)=-1

            替换,left用来取字符串左起1的值,strcmp用来比较两个值,如果比较结果相等于为0,左边小的话,就为-1,否则为1.

          9、盲注无需or和and

             

 例如index.?id=1

                当and和or被过滤时,可以将1修改为是通过语句生成的,index.php?

        10、加括号

            

如:id=( 1)union(select(1),mind(hash,1,32)from(users))

            等

        11、缓冲区溢出绕过:

 

例如id=1 and (select 1)=(Select 0xAAAAAAAAAAAAA)+UnloN+SeleCT+1,2,vsersion(),4,5,database(),user(),8,9,10#

        其中A越多越好,一般要求1000+