什么是sql注入?
利用现有的应用程序,将恶意的sql命令注入到后台数据库引擎执行
漏洞原理:
SQL注入是指Web应用程序对用户输入数据的合法性未进行判断、处理。前端传入的参数是攻击者可控的,并且参数被正常带入到数据库中执行,攻击者可以通过构造不同的SQL语句来对数据库进行操作, 正常情况下,攻击者可以对数据进行高危操作。例如,数据查询、WebShell写入、命令执行等操作。
危害:
数据库信息泄露
获取webshell
网页篡改
文件读取
产生条件:
参数是用户可控的,也就是前端传入后端的参数的内容是用户可以控制的; 参数被带入数据库进行查询,也就是传入的参数被拼接到SQL语句中,并且被带入到数据库进行查询;
注入类型:
按数据库注入
Access、MsSQL、MySQL、Oracle、DB2等;
按提交方式注入
GET、POST、cookie、HTTP头、XFF;
按注入点类型
数字型、字符型、搜索型;
按执行效果/方式:
联合注入、报错注入、布尔盲注、时间盲注、堆叠查询注入;
注入流程
判断是否存在注入,注入是字符型还是数字型
猜解 SQL 查询语句中的字段数 order by N
确定显示的字段顺序
获取当前数据库
获取数据库中的表
获取表中的字段名
查询到账户的数据