IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Sqli-labs 靶机注入训练(1-5) -> 正文阅读

[大数据]Sqli-labs 靶机注入训练(1-5)

1、sqli-labs 环境搭建

什么是sqli-labs?

SQLi-Labs是一个专业的SQL注入练习平台,适用于GET和POST场景(印度一哥们儿写的)

环境搭建

1.下载sqli-labs

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

2.phpstudy(PHP+mysql环境搭建)

①首先先下载一个PHPstudy

②把你的sql-labs.zip解压到这个PHPstudy的根目录底下

这里我建了一个文件夹叫sqli 把东西解压在了里面
地址例如:E:\phpstudy_pro\WWW\sqli

3、修改 db-creds.inc 里代码

在这里插入图片描述在这里插入图片描述进入之后 把你的用户名和密码改成PHPSTUDY中数据库的用户名和密码

④访问http://sqli/(访问域名,你放在哪个文件夹就叫什么) 来进入sqli-labs的首页

在这里插入图片描述进入后点击
在这里插入图片描述来创建数据库 成功了的话会是如下情况:
在这里插入图片描述就此 环境搭建完成

常见问题:

1.有时候会出现Mysql1045的错误
我们进入my.ini
在这里插入图片描述
加入语句
sql_mode=STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
即可。
(如果有这个语句 那就把前面的group_by给去掉就行)

2.less -1

1.首先通过输入内容的修改来判断漏洞

在这里插入图片描述

正常情况下 我们通过输入?id=1可以正常访问页面

我们可以通过修改输入内容来简单测试该页面接收的数据类型

在这里插入图片描述

可以明显看见 我们在将输入内容改为id=1 and 1=1之后 页面没有发生变化

这里我们就可以判断其代码中所接收的数据形式应该为字符串型。

则我们可以总结出第一步:

即通过输入没有语法错误的语句来判断接收的数据的类型

接着我们输入id=1’
在这里插入图片描述

则我们可以基本判定其id为闭合的 且与单引号有关

我们接着输入id=1’ --+ (–+的作用是注释掉sql语句后面的内容)

在这里插入图片描述

则没有报错

2.判断出漏洞后 我们接下来就要进行代码的构造

我们的主要目的是首先要找到对方的数据库名称

在mysql数据库中 通过select 1,2可以返回1 ,2两个值

通过这个语句我们可以来判断有几个数据可以回显

在这里插入图片描述

我们发现没有明显的数据回显。

在mysql中 联合搜索中 如果前面的搜索结果无法显示 那么会只显示后面的查询结果

我们将id=1改为id=-1(一般来说 数据库中不应该存在id=-1的情况)

在这里插入图片描述

这里我们看到返回了2,3 我们可以判断是2,3列能够回显。

通过order by我们能够来推测大概有这个表有多少列数据

在这里插入图片描述

通过order by语句(在mysql 中 order by 语句可以对查询结果进行排序)

我们知道一共有3行数据。

下一步 我们可以通过select datebase() 语句 来获得当前使用的数据库名称

我们将输入改为
在这里插入图片描述

得到了数据库的名称:security

对此 我们可以进一步查询security 下数据库表的名字

?id=-1’ union select 1,2,group_concat(table_name)

from information_schema.tables

where table_schema=‘security’ --+

我们来分析一下这个语句

1.首先 select 1,2的目的 是为了让我们当前显示的值为2,3列(因为只有2,3列会进行回显)

2.在mysql中 group_concat语句可以将所有的table名字给提取出来

3.在所有的Mysql中,一定会有一个数据库名字为 information_schema(mysql特有)

这个数据库保存了其他所有数据库的信息 通过这个数据库 我们可以得到其他数据库的信息

效果如下图所示

在这里插入图片描述

我们可以清楚的看到,我们得到了emails referers ugents users四个表

接下来我们就可以对它的用户和密码进行查询

查询用户:

?id=-1’ union select 1,2,group_concat(username) from security.users --+

在这里插入图片描述

查询其对应的密码:

?id=-1’ union select 1,2,group_concat(password) from security.users --+

在这里插入图片描述

这样 就算是注入完成了

总结:
对于sql注入 我们通常的步骤分为两大步
1.判断漏洞类型(重点)(也就是要想办法让页面报错)
2.对sql语句进行改造 用于得到我们想要的内容

3.less -2

步骤:

1.首先依旧是判断漏洞类型

我们输入?id=1 and 1=1 发现并没有报错

在这里插入图片描述

再输入?id=1 and 1=2

在这里插入图片描述

发现并没有数据显示

初步判断为整形数据的sql漏洞

其余的步骤与Less-1相同 不用加引号即可

4.less -3

1.进行漏洞类型判断
在这里插入图片描述判断为非整形
在这里插入图片描述我们输入单引号 发现报错

通过报错内容 我们发现是单引号的闭合出了问题
在这里插入图片描述我们通过添加单括号 即可正常查询

接下来的步骤与前面一致

5.less -4

首先还是找漏洞

我们在输入双引号的时候 发现报错
在这里插入图片描述查看报错内容 发现是双引号与单括号的闭合漏洞

在这里插入图片描述即可正常登陆

剩余步骤与上面相同

6.less -5

Less-5与前面四个靶机内容不同

当我们输入?id=1登入之后 我们会进入这个页面
在这里插入图片描述也就是说 我们没办法直接获取信息

但无论如何 我们还是先找漏洞
在这里插入图片描述
通过 语句 我们发现正常闭合且显示正确

说明是单引号的注入漏洞

当然 这一题并不是完全的盲注
在这里插入图片描述我们通过输入order by 等语句还是能看到明显的回显

因为没有数据显示 那么我们就不能用联合查询进行报错

所以我们这里采用报错注入

报错注入

报错注入的方法有多种 我们这里采用 floor报错

格式如下:

and (select 1 from (select count(*),concat((payload),floor (rand(0)*2))x from information_schema.tables group by x)a)

再者其中 payload就是你要搜索的语句
而对于本题 我们输入的内容如下:

?id=1’ and (select 1 from (select count(*),concat((SELECT schema_name FROM information_schema.schemata limit 0,1),floor (rand(0)*2))x from information_schema.tables group by x)a) --+
在这里插入图片描述
这里通过limit值 我们可以一条 一条的搜索 数据库的名称

同理 我们可以通过相同的方法来进行数据库表的查询

输入如下:

?id=1’ and (select 1 from (select count(*),concat((SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA=“ctftraining” limit 0,1),floor (rand(0)*2))x from information_schema.tables group by x)a) --+

其余同理即可。
报错注入:
链接: https://blog.csdn.net/he_and/article/details/80455884.

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:30:42  更:2021-12-04 13:32:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/19 2:55:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码