最近在做一个网络安全相关项目的渗透测试,在拿到了服务器的webshell之后,需要进一步渗透,服务器上有较高权限的软件只剩SQL Server 2005了,而且在webshell中通过SQL Server 2005提权拿到系统权限,由于拿到webshell的服务器在内网,通过防火墙做了端口映射,无法直接使用SQL Server管理工具进行管理,就需要通过webshell执行SQL 语句来操作SQL Server数据库,其中用到了一些非常规的SQL语句,列举一些sql语句来介绍数据库,数据表,视图等等。当我们在使用查询查询操作时这些sql语句都是非常有用的。虽然在sql server对象浏览器中我们也可以获得这些语句,但是如果我们写这些语句时我们可以将它自定义。这就意味着我们可以给予自己的需求来过滤结果。

sql语句列表(当拿到webshell之后只能看到服务器上有SQL Server数据库但是不知道数据库里有哪些库,这将会是我们无法操作数据库)

如何列举sql server当前连接的可用数据库

Method 1 : SP_DATABASES

Method 2 : SELECT name FROM SYS.DATABASES

Method 3 : SELECT name FROM SYS.MASTER_FILES

Method 4 : SELECT * FROM SYS.MASTER_FILES -- Type=0 for .mdf and type=1 for .ldf

SP_DATABASES是一个可以列举数据库及其大小的存储过程

sys.databases语句中可以列举数据库名称,创建日期,修改日期,已经数据库id和其他一些信息。

SYS.MASTER_FILES语句可以查询数据的详细情况,比如数据库id,大小,物理存储路径以及列举数据库mdf和ldf.

如何列举数据库中的数据表

(知道了数据库还需要指导数据库里有那些表,这样才能知道各个库里有什么数据,哪些数据能够帮助我们拿到更高的业务平台权限)

以下的sql语句都可以列表sql server数据库中的用户表.

Method 1 : SELECT name FROM SYS.OBJECTS WHERE type='U'

Method 2 : SELECT NAME FROM SYSOBJECTS WHERE xtype='U'

Method 3 : SELECT name FROM SYS.TABLES

Method 4 : SELECT name FROM SYS.ALL_OBJECTS WHERE type='U'

Method 5 : SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'

Method 6 : SP_TABLES

如何列举数据库中的存储过程

Method 1 : SELECT name FROM SYS.OBJECTS WHERE type='P'

Method 2 : SELECT name FROM SYS.PROCEDURES

Method 3 : SELECT name FROM SYS.ALL_OBJECTS WHERE type='P'

Method 4 : SELECT NAME FROM SYSOBJECTS WHERE xtype='P'

Method 5 : SELECT Routine_name FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE='PROCEDURE'

SYS.OBJECTS数据表包含了全部的存储过程,数据表,触发器,视图等的信息,这里使用type=’p'来查询存储过程.

Information_schema.routines在sql server 7.0是一个数据视图,在其后的版本中已经变成存储过程专有的表.

如何列举数据库中的视图

Method 1 : SELECT name FROM SYS.OBJECTS WHERE type='V'

Method 2 : SELECT name FROM SYS.ALL_OBJECTS WHERE type='V'

Method 3 : SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS

Method 4 : SELECT name FROM SYS.VIEWS

如何列举数据库中的函数Method 1 : SELECT name FROM SYS.OBJECTS WHERE type='IF' -- inline function

Method 2 : SELECT name FROM SYS.OBJECTS WHERE type='TF' -- table valued function

Method 3 : SELECT name FROM SYS.OBJECTS WHERE type='FN' -- scalar function

Method 4 : SELECT name FROM SYS.ALL_OBJECTS WHERE type='IF' -- inline function

Method 5 : SELECT name FROM SYS.ALL_OBJECTS WHERE type='TF' -- table valued function

Method 6 : SELECT name FROM SYS.ALL_OBJECTS WHERE type='FN' -- scalar function

Method 7 : SELECT Routine_name FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE='FUNCTION'

如何列举数据库中的触发器

Method 1 : SP_HELPTRIGGER Products

Method 2 : SELECT * FROM SYS.TRIGGERS WHERE parent_id = object_id('products')

下面我以一个products表为例列举一些对表的操作.

如何获取数据表中的列Method 1 : SP_HELP Products

Method 2 : SP_COLUMNS Products

Method 3 : SELECT * FROM SYS.COLUMNS WHERE object_id = object_id('Products')

Method 4 : SELECT COLUMN_NAME,Ordinal_position,Data_Type,character_maximum_length FROM                      INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Products'

如何根据数据表的列查找数据表的名称

Method 1 : SELECT O.name FROM SYS.OBJECTS O INNER JOIN SYS.COLUMNS C ON C.Object_ID = O.Object_ID  WHERE C.name LIKE '%ShipName%'

Method 2 : SELECT OBJECT_NAME(object_id) AS [Table Name] FROM SYS.COLUMNS WHERE name LIKE '%ShipName%'

Method 3 : SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%ShipName%'

如何获得数据表的总列数Method 1 : SELECT COUNT(@@ROWCOUNT) FROM Products

Method 2 : SELECT COUNT (ProductID) FROM Products

Method 3 : SELECT OBJECT_NAME(id) AS [Table Name],rowcnt FROM SYSINDEXES WHERE OBJECTPROPERTY(id,'isUserTable')=1 AND indid < 2 ORDER BY rowcnt DESC

Method 4 : SELECT  rowcnt FROM sysindexes WHERE id = OBJECT_ID('Products') AND  indid < 2

Method 5 : SELECT OBJECT_NAME(OBJECT_ID) TableName,row_count FROM sys.dm_db_partition_stats WHERE object_id = object_id('Products') AND  index_id < 2

如何获得数据表的约束

Method 1 : SELECT * FROM SYS.OBJECTS WHERE type='C'

Method 2 : SELECT * FROM sys.check_constraints

如何获得数据表的索引

Method 1 : sp_helpindex Products

Method 2 : SELECT * FROM sys.indexes WHERE  object_id = object_id('products')

如何获得数据视图的模式定义

Method 1 :  SELECT OBJECT_NAME(id) AS [View Name],text FROM SYSCOMMENTS WHERE id IN (SELECT object_id FROM SYS.VIEWS)

Method 2 : SELECT * FROM sys.all_sql_modules WHERE object_id IN (SELECT object_id FROM SYS.VIEWS)

Method 3 : SP_HELPTEXT ViewName

如何获得存储过程中的数据表

Method 1 : SELECT OBJECT_NAME(id) FROM SYSCOMMENTS S

INNER JOIN SYS.OBJECTS O ON O.Object_Id = S.id

WHERE S.text LIKE '%Products%'

AND O.type='P'

总结为了避免涉及到渗透测试相关的保密数据,这里的相关操作已经经过了处理,以上列举了一下sql server用实用的一些sql语句,希望对你在使用查询窗口操作时有用,这些SQL语句能在无法使用客户端的情况下,通过webshell执行SQL语句的形式对数据库进行管理,由于通过webshell连接的数据库用户权限受限,需要通过现有较低的权限获取系统的结构信息,进一步借助系统现有的较高权限的软件进行提权。

linux脚本读取mssql数据库,WebShell通过SQL语句管理MSSQL相关推荐

  1. 数据库导入语句linux,数据库应用-SQL语句导入导出大全

    数据库应用-SQL语句导入导出大全 发布时间:2006-06-03 09:59:43来源:红联作者:yo /******* 导出到excel EXEC master..xp_cmdshell 'bcp ...

  2. 帝国cms php sql,帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

    帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 例1:连接MYSQL数据库例子.(a.php) db_close(); //关闭MYSQL链接$empire=null; //注消操作类变量? ...

  3. java数据库编程——执行SQL 语句

    [0]README 1) 本文文字描述+source code 均转自 core java volume 2 , 旨在理解 java数据库编程--执行SQL 语句 的基础知识 : 2)for sour ...

  4. 云服务器怎么执行sql文件在哪里,总结帝国CMS下在PHP文件中怎么调用数据库类执行SQL语句实例...

    总结帝国CMS下在PHP文件中怎么调用数据库类执行SQL语句实例 发布时间:2020-10-19 14:58:08 来源:亿速云 阅读:83 作者:小新 这篇文章将为大家详细讲解有关总结帝国CMS下在 ...

  5. Java让数据库执行一条sql_java数据库编程——执行SQL 语句

    [0]README [1]java数据库编程--执行SQL 语句相关 1)执行 SQL 命令前, 首先需要创建一个 Statement 对象: 要创建 statement 对象,不需要调用 Drive ...

  6. 软件创新实验室:MySQL数据库与简单SQL语句使用

    文章目录 前言 简介 特点 SQL DDL:操作数据库.表 DML:增删改表中数据 DQL:查询表中的记录 后记 拓展 范式 第一范式 1NF 第二范式 2NF 第三范式 3NF B+树 节点结构 插 ...

  7. 第二十三章 MySQL数据库 手册2 SQL语句

    第二十三章 MySQL数据库 手册2 SQL语句 实验二:用SQL语句,管理数据库 `危险命令,delete 后不加 where 条件代表删除所有数据 delete.` `更加危险的删除命令trunc ...

  8. 命令行客户端MySQL基本命令的使用(登录、登出、数据库操作的SQL语句、表结构的SQL语句、表数据操作的SQL语句)

    1. 登录和登出数据库 登录数据库: 输入下面命令: mysql -uroot -p 说明: -u 后面是登录的用户名  [写成-u root也是可以的] -p 后面是登录密码, 如果不填写, 回车之 ...

  9. 怎么从 SQL Server 数据库中导出 SQL 语句?

    同于直接/备份/恢复 或者 导入/导出 数据库操作. 新版本SQL Server客户端中还可以生成相对应的SQL语句. 非常方便与查看和与其他人共享. 操作步骤如下: 连接上数据库后, 右击数据库, ...

最新文章

  1. 使用Nginx搭建简单的音视频直播平台RTMP协议
  2. 逻辑判断 java_写 JS 逻辑判断,不要只知道用 if-else 和 switch
  3. OpenGL Cubic Bezier三次贝塞尔曲线修补实例
  4. POJ 2337 欧拉回路
  5. Initializer provides no value for this binding element and the binding element has no default value
  6. 懒加载 jquery代码
  7. 文字阴影-CSS Text-Shadow
  8. 新乡学院2019计算机报名,新乡学院2019年招生章程
  9. 两个女的:“你好,我想问一下......我们饿了,能不能买......”
  10. iOS的帮助网站(企业包发布)adhoc的测试
  11. 理解函数:对象(this,arguments),方法(apply(),call(),bind())。
  12. MYSQL——数据修改
  13. 一枝穿云箭,千军万马来相见——致2015届电子科大信软学院新生
  14. usb打印机命令_自己动手不求人 日常打印机故障全知晓
  15. 燕十八的php教材学完能找工作吗,燕十八的布尔教育怎么样? - php完全自学手册...
  16. phpstudy mysql恢复数据_MySQL_详解MySQL误操作后怎样进行数据恢复,一、开启binlog。 首先查看binlo - phpStudy...
  17. 舞伴配对问题(顺序队列)
  18. OCR文本图像合成工具
  19. JS的严格模式和标准模式
  20. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第八章:高级控件

热门文章

  1. linux特殊符号大全
  2. 建立ghost备份后,找不到gho文件
  3. 创建文档库时指定文件夹(路径)
  4. Linux基础命令小结
  5. Redis常见面试题总结
  6. 利用Github搭建自己的图床
  7. csharp DataTable and DataGridView delete a Row
  8. Vue 系列之 组件
  9. setcookie无效
  10. python基础 继承