SQL注入攻击及防御01
实验简介
在owasp年度top10安全问题中,注入高居榜首。SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
1.对于Web应用程序而言,用户核心数据存储在数据库中,例如MySQL、SQL Server、Oracle;
2.通过SQL注入攻击,可以获取、修改、删除数据库信息,并且可以通过提权来控制web服务器等其他操作;
3.SQL注入即攻击者通过构造特殊的SQL语句,入侵目标系统,致使后台数据库泄露的过程;
4.因为SQL注入漏洞造成的严重危害性,所以常年稳居 OWASP TOP10的榜首!
SQL语句是不可能修改的,只能对输入想方法。
SQL注入危害
1.拖库导致用户数据泄露;
2.危害web等应用的安全;
3.失去操作系统的控制权;
4.用户信息被非法买卖;
5.危害企业及国家的安全!
SQL基础回顾
常见的数据库对象:
- 表(table,数据实际存储在磁盘上,占用磁盘空间):基本的数据存储集合,由行和列组成。
- 视图(view,虚表,数据部存储在磁盘上,不占用磁盘空间):从表中抽出的逻辑上相关的数据集合。
- 序列(sequence):提供有规律的数值,主要用于提供主键值。
- 索引(inddex,实际存储子啊磁盘上,占用磁盘空间):适当的创建索引可提高对数据的查询效率。
- 同义词(synonym):给对象起别名,简化缩写。
- 约束:增强数据的完整性;完整性约束是一种规则,存储在数据字典中,不占用任何数据库空间。
- 过程和函数:区别为调用方式不同。过程和函数都以编译后的形式存放在数据库中,每个函数的参数个数>=0,返回值为1个。过程的参数个数>=0,没有返回值。
- 包:将过程、函数和数据结构捆绑在一起的容器,分别为两部分:
–包规范:函数头、过程头、外部可视数据结构;
–包主体:所有被捆绑的过程和函数的声明、执行、异常处理部分 - 触发器(triggers):触发器是一种自动执行响应数据库变化的程序。可以设置为在触发器事件之前或之后触发或执行。
- 数据字典:由Oracle Server自动创建的一组表且包含数据库信息。
登录OWASP
项目环境:OWASP
表1 : dvwa.users
表2 : wordpress.wp_users
表3 : mysql.user
mysql -uroot -powaspbwa #登录数据库
查看数据库
mysql>show databases;
#显示当前所在库
mysql>select database();
#显示当前用户
mysql>select user();
#显示当前时间
mysql>select now();
#进入指定数据库
mysql>use dvwa;
mysql>select database();
查看数据库中的表
#查看当前数据库中的表
mysql>show tables;
#查看表的结构,大写命令才会被自动补全
mysql>DECSCRIBE users;
#创建表
mysql>create table users;
#查看表的详细属性
mysql>show create table users;