将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。
注入能导致数据丢失、 破坏或泄露给无授权方,缺乏可审计性或是拒绝服务。注入有时甚至能导致主机完全被接管。 注入攻击的本质:就是把用户输入的数据当做代码执行。(过于信任用户)
SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的入侵行为。
(图片来源网络)
随着B/S模式被广泛的应用,由于没有对用户的输入数据或者是页面中所携带的信息进行的合法性校验,导致了攻击者可以提交一段数据库查询代码,根据程序返回的结果,获得一些Ta想得到的数据。被称为数据库的注入攻击(SQL注入攻击)。
也就是数据与代码未严格分离;用户提交的参数数据未做充分检查过滤就被代入到SQL命令中,改变了原有SQL命令的“语义”,且成功被数据库执行。
包括但不局限于:
可分为:数字型(Integer)和字符型(String)
可分为:显错注入(Error-Based)和盲注(Boolean/Time-Based Blind)
步骤 | 盲注 | 联合查询注入 |
---|---|---|
1 | 判断是否存在注入,注入是字符型还是数字型 | 判断是否存在注入,注入是字符型还是数字型 |
2 | 猜解当前数据库名 | 猜解SQL查询语句中的字段数 |
3 | 猜解数据库中的表名 | 确定显示的字段顺序 |
4 | 猜解表中的字段名 | 获取当前数据库 |
5 | 猜解数据 | 获取数据库中的表 |
(图片来源网络)