SQL注入漏洞产生需要满足以下条件:
1)参数用户可控:前端传给后端的参数内容是用户可以控制的。
2)参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询
以注入位置分类:
1)GET注入
2)POST注入
3)Cookie注入
4)搜索注入
以参数类型分类:
1)字符注入
2)数字注入
以注入技术分类:
1)错误注入 (通过构造特殊的申SQL语句,根据错误信息,确认SQL注入点)
原理:通过数据库报错信息,可以探测到数据库的类型和其他有用的信息
举例:通过单引号字符(通过输入单引号,触发数据库异常,通过异常日志诊断数据库类型)
2)布尔注入
3)UNION注入
4)时间盲注
5)ASCII逐字解码
SQL注入流程:
1)判断是否有SQL注入漏洞
通过手工或者自动化注入
a.根据报错和布尔等显示注入思路,判断目标网页、表单是否存在注入点
b.如果做了基本的字符安全过滤,还可以使用更加复杂的盲注(例如时间盲注)来进阶判断
2)判断操作系统和数据库类型
3)获取数据库信息
1、获取数据库账号信息(管理员信息)
2、获取数据库用户信息(脱库)
4)加密信息破解
5)提权
1、控制服务器
2、webshell 执行系统命令
3、后台登录
6)内网渗透