快捷搜索: 王者荣耀 脱发

Web渗透之sql注入基础 手把手教程!!!

数据库基础知识

数据库:数据库是一个由一批数据构成的有序集合,这个集合通常被保存为一个或多个彼此相关的文件。用户可以对文件中的数据进行增删改查等操作。

数据库主要分为两类:关系型数据库和非关系型数据库。

关系型数据库:存储格式能直观反映实体间的关系,和创建的表格比较相似,表与表之间有着复杂的关联关系。有:Mysql,Oracle等等。

非关系型数据库:分布式、非关系型、不保证遵循ACID原则的数据存储系统,有MongoDB、Redis等等。

数据库管理系统是一种操纵和管理数据库的软件,是用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

增:

INSERT INTO [TABLE_NAME] (column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN);

删:

DELETE FROM [table_name] WHERE [condition]; 改:

UPDATE [table_name] SET column1 = value1, column2 = value2...., columnN = valueN

查:

SELECT column1, column2, columnN FROM table_name;

Order by排序,当order by后的数字大于当前列数时会报错


sql注入

一、sql注入产生的原因:当web应用向后台数据库传递sql语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的sql语句,直接输入数据库引擎执行,获取或修改数据库中的数据。

二、sql注入的本质:把用户输入的数据当作代码来执行,违背了“数据与代码分离”的原则。

三、sql注入的两个关键点:1.用户能够控制输入的内容 2.web应用把用户输入的内容带入到数据中执行

四、sql注入的分类:

1.根据注入位置分类:GET型、POST型、Head头注入

2.根究反馈结果分类:有回显(显错注入)、无回显(盲注)

3.根据数据类型分类:数字型:输入的参数为整形

字符型:输入的参数为字符串

数字型和字符型最大的区别在于:数字型不需要单引号闭合,而字符串型一般需要单引号闭合

五、sql注入的流程

1.寻找注入点

2.判断闭合方式

3.验证漏洞

4.判断列数及回显位(利用order by来判断列数)

5.取数据(取数据库名;根据数据库名取表名;根据数据库名、表名,取列名;取具体数据)

实际执行:

1.查询数据库类型:通过错误显示,已经知道是mysql

2.查询当前系统所使用的数据库名称是什么:

select * from 表名 where id = 1 union select 1,database()#

3.查询当前数据库的表有什么内容:information_schema查询表名

0‘ union select 1,table_name from information_schema.tables where table_schema = 数据库名

4.查询制定表的字段信息:information_schema查询字段信息

0’union select 1,column_name from information_schema.columns where table_name = 表名

5.查询想要的信息内容:

0‘ union select 字段名1,字段名2 from 表名#

经验分享 程序员 微信小程序 职场和发展