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.经过语句and 1=2测试 ,页面回显正常,所以该地方不是数值查询

2.接着尝试在id后面加上',发现页面回显不正常,表示可能存在SQL字符注入

?3.输入--+将sql后面的语句注视掉后,发现页面回显正常,则证明这个地方是单引号字符型注入

?4.接着使用order by 语句判断,该表中一共有几列数据

? order by 3页面回显正常,order by 4页面回显不正常,说明此表一个有3列。5.将id=1改为一个数据库不存在的id值,如861,使用union select 1,2,3联合查询语句查看页面是否有显示位。

?发现页面先输出了2和3,说明页面有2个显示位
6.然后利用sql查询语句依次爆破出数据库内的数据库名,表名,列名,字段信息
例子:
http://127.0.0.1/sqli-labs/Less-1/?id=861' union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+
这是一个查询数据库名信息的语句

?第二关

1.输入?id=2-1页面信息发生变化,说明此处是数值型注入

?2 order by 3? 页面显示正常,order by 4页面显示不正常,所以该表有3列数据

3? 接着可以使用联合查询进行注入,详细过程参考第一关

第三关

1.向页面输入?id=2'??--+页面显示不正常

但是输入? ?id=2') --+ 页面回显正常,说明此处是字符型注入,而且是以 ('')的方式闭合字符串的

?2.接着使用order by 判断表中有3列数据

3.接着使用联合查询,union select 1,2,3 判断页面是否有显示位? ?答案:有

下面使用第一关所使用的查询语句,测试一下

?

?第四关

与第三关类似,第四关使用? ?("")? ?的方式闭合字符串,然后可以优先使用联合查询注入

1.当输入?id=3" --+时,页面显示不正常

?2.当输入?id=3") --+

?第五关

首先在未知闭合方式的条件下,构造payload进行测试

127.0.0.1/sql/Less-5/?id=1

观察到页面回显如下

?重新构造payload

127.0.0.1/sql/Less-5/?id=1'

观察到页面回显sql查询语句错误

?这里说明我们已经猜中了其闭合方式,后台构造的查询语句为
$sql= “SELECT * FROM 表名 WHERE id = ‘id’ LIMIT 0,1”

构造新的payload

127.0.0.1/sql/Less-5/?id=1' order by 3 --+

回显结果与第一次回显结果一致

我们判断原本的方法已经不能使用,在正常的查询语句下,只会显示You are in …,而在错误的情况下,会爆出sql语句错误的信息,只存在正确和错误两种返回结果,并且不能像前四关一样再去判断显示位,因为根本没有显示位可以利用。

故我们可以猜想,通过一些方法,能不能让在爆出错误的信息下而获得到我们想要的信息呢?
答案是可以的,通过一些特有的函数,我们可以在错误的信息中得到正确的信息。

因为我们已知闭合方式为单引号
基于报错经常使用的函数
updatexml函数,extractvalue函数,floor函数
构造新的payload
这里,我们可以看到爆出使用的库名为security127.0.0.1/sql/Less-5/?id=-1' OR 1 GROUP BY CONCAT_WS(0x3a,database(),FLOOR(RAN(0)*2)) HAVING MIN(0) OR 1 --+

?这里,我们可以看到爆出使用的库名为security

知道库名之后,我们再构造新的payload,用来获取security库中的表

?id=0' UNION SELECT 1,2,3 from ( select count(*),concat(floor(rand(0)*2),(select database()))a from information_schema.tables group by a)b--+

?这里我们可以知道,security库中有emails, referers,agents,users 四个表

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:37:32  更:2022-02-26 11:38:48 
 
开发: 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年11日历 -2024/11/24 12:03:00-

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