Bootstrap

网络安全之SQL注入学习(持续更新)

  

目录

  


目录

  

1.什么是SQL注入?

web应用程序三层架构:视图层 + 业务逻辑层 + 数据访问层

2.SQL注入中的一些小知识

1.)数据库服务器层级关系:

2.)SQL语句语法

1。查询当前数据库服务器所有的的数据库

2。选中莫个数据库

3。查询当前数据库所有的表

4。查询t1表所有数据

3).SQL注入之MySQL数据库

4).SQL注入完整思路

3.如何高效的SQL注入



1.什么是SQL注入?

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息

web应用程序三层架构:视图层 + 业务逻辑层 + 数据访问层

2.SQL注入中的一些小知识

1.)数据库服务器层级关系:

服务器里面

:多个数据库

        :多个数据表

                :多个行 列 字段

                        :数据

2.)SQL语句语法

1。查询当前数据库服务器所有的的数据库

show databases;

2。选中莫个数据库

use 数据库名字

3。查询当前数据库所有的表

show tables;

4。查询t1表所有数据

查询关键 select

*所有

from 表名

select * from t1;

条件查询 id=2

where 条件

select * from t1 where id =2 ;

查询id=2 pass=111

union 合并查询

2个特性:

(1)前面的查询语句 和 后面的查询语句 结果互不干扰!

(2)前面的查询语句的字段数量 和 后面的查询语句字段数量 要一致

select * from where id=-2 union select * from where pass=111;

select id from where id=2 union select * from where pass=111;

select id from where id=2 union select id from where pass=111;

order by 排序

order by 字段名字 id 也可以跟上数字1,2,3,4.。。。

来猜解表的列表 知道表里有几列

information_schema库:

schmata:show databases 取之

schema_name保持当前数据库服务器里面所有库名的信息

tables: 查询所有表的信息         table_name

colunms: 所有字段 列 colunms_name

3).SQL注入之MySQL数据库

1.information_schema库:是信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息;例如数据库或表的名称,列的数据类型或访问权限。有时用于此信息的其他术语是数据字典和系统目录。web渗透过程用途很大。

SCHEMATA表:提供了当前MySQL实例中所有数据库信息,show databases结果取之此表。

TABLES表:提供了关于数据中表的信息,table_name

COLUMNS表:提供了表的列信息,详细描述了某张表的所有列以及每个列的信息。column_name是信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息;例如数据库或表的名称,列的数据类型或访问权限。web渗透过程中用途很大

2,performance_schema库具有87张表

MySQL5.5开始新增一个数据库:PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数。内存数据库,数据放在内存中直接操作的数据库。相较于磁盘,内存的数据读写速度要高几个数量级

3.mysql库

是核心数据库,类似于sql serve 中的master表,主要负责存储数据库的用户(账户)信息,权限设置,关键字等mysql自己需要使用的控制和管理信息。不可以删除,如果对mysql不是很了解,也不要轻易修改这个数据库里面的表信息

4.sys库具有1个表,100个视图。

sys库是MySQL5.7增加的系统数据库,这个库是通过视图的形式把information_schema和performance_schema结合起来,查询出更加令人容易理解的数据。

可以查询谁使用了更多的资源,哪张表访问最多等

4).SQL注入完整思路

1.判断是否可以注入

2.获取数据库名

3.获取表名

4.获取列名

5.获取数据

3.如何高效的SQL注入

1).sql自动注入工具 ------sqlmap

https://sqlmap.org

sql注入练习靶场sqli-labs

官方代码不支持PHP7

https://github.com/Audi-1/sqli-labs

支持php7的代码

https://github.com/goldroad/sqli_labs_sqli-version

 

;