web基础漏洞-sql注入
1、介绍
sql注入,攻击者从前端提交的数据,未经过严格检查,别拼接到sql语句中,交给了sql应用执行。从而可能导致恶意构造的payload破坏原有的sql语句结构,执行超预期的功能,造成危害。
- 几乎所有的sql应用都存在sql注入漏洞,但一般讨论和测试时以mysql为主
- 预编译可以有效防止sql注入漏洞,在几乎所有服务端语言的连接sql的框架中被提供选择
- 防火墙和对参数的检查,可以一定程度防止sql注入
2、sql注入类型
2.1 超范围执行
- 针对update、delete、select语句,构造超出当前用户权限的where判断,从而超范围执行删改查操作。
2.2 查询判断
- 主要针对注册、登录等场景,服务端sql查询判断条件是否满足,构造payload以满足或不满足,然后执行超预期的流程。比如任意账号登录
2.3 赋值
- 针对insert和update语句,将查询内容写入字段。实现将查询的权限外内容写入合法的权限内
2.4 联合查询
- order by确认查询字段数
- union select 1,2..n,确认是单查询还是集合查询,以及查询参数与输出点对应关系
- union select version(), user()..,查询基本信息
2.5 布尔盲注
2.6 时间盲注
2.7 报错注入
2.8 堆栈注入
2.9 系统命令注入
2.10 文件读写