本文主要介紹一下Asp.net木馬中文件操作功能的具體實現(xiàn)。 (關于防Asp.Net木馬及Webshell攻擊的解決辦法見文章ASP.NET木馬及Webshell安全解決方案)
要編寫Asp.net木馬,首先要導入名稱空間System.IO。名稱空間System.IO提供了大量文件和文件夾的操作功能,包括讀寫文件、創(chuàng)建和刪除目錄以及察看文件和目錄的屬性。
1. 淺談取得文件和文件夾的信息
詳細說一下attributes集合,它提供了文件和文件夾的額外信息,如是否只讀的或隱藏的。
文件和目錄的屬性
屬性 數(shù)字值
ReadOnly(只讀) 1
Hidden(隱藏) 2
System(系統(tǒng)) 4
Directory(目錄) 16
Archive(存檔) 32
Encrypted(加密) 64
Normal(普通) 128
Tempory(臨時) 256
SparseFile(稀疏文件) 512
Compressed(壓縮) 2048
Offline(脫機) 4096
NotContentIndexed(非內(nèi)容索引) 8192
要改變文件的屬性,只需將這些值類加。例如,要將目錄設置為隱藏+系統(tǒng)+加密+壓縮,可以使用下面的語句:
f.attributes=2138
2138即2+4+64+2048
這些值估計新手很難記憶,我們直接用屬性名稱來設置,只要用或bitor來分割各屬性,如:
f.attributes=FileAttributes.Hidden BitOr FileAttributes.System BitOr FileAttributes. Encrypted BitOr FileAttributes. Compressed
上述代碼相當于f.attributes=2138
要確定文件或者文件夾的某個屬性被設置,可使用與操作符bitand這樣來檢測:
if f.attributes bitand fileattributes.hidden >0 then
response.write(“屬性為隱藏!”)
end if
檢測函數(shù):
sub getfileinfo()
dim f as new fileinfo(server.mappath(“test.aspx”))
f =new fileinfo(strf)
label1.text="文件信息:
文件名稱:"& f.name &
"
文件路徑:" & f.directoryname &
"
創(chuàng)建時間:" & f.CreationTime &
"
最后訪問時間:" & f.lastaccesstime &
"
最后修改時間:" & f.lastwritetime &
"
文件長度:" & f.length & "bytes
文件屬性:" & f.attributes & "
"
dir=f.directory
label1.text+="目錄信息:
目錄名:"& dir.name &"
目錄全名:" & dir.fullname & "
創(chuàng)建時間:" & dir.CreationTime & "
最后訪問時間:" & dir.lastaccesstime & "
最后修改時間:" & dir.lastwritetime & "
父母錄:" & dir.parent.name &
"
目錄屬性:" & dir.attributes & "
"
end sub
2. 打開文件的各種手法
Asp.net允許以二進制和Unicode模式打開文件,由于二進制方法比較少用,下面主要介紹用Unicode打開文件的各種模式。
File對象的open方法
方法 描述
Open() 按照提供的參數(shù)打開文件,返回一個stream流
OpenRead() 返回文件的一個只讀流
OpenText() 返回一個SteamReader對象
OpenWrite() 返回文件的一個讀寫流
其中,open()方法接受3個參數(shù),從做到右依次為filemode(打開方式),fileaccess(訪問權(quán)限),fileshare(處理共享)
FileMode值
模式 說明
Append(僅適用write訪問權(quán)限) 若文件存在,打開
若文件不存在,創(chuàng)建一個新文件
Create 創(chuàng)建新文件或者覆蓋已經(jīng)存在的文件
CreateNew 創(chuàng)建新文件
Open 打開已存在的文件
Openorcreate 若文件存在,打開
若文件不存在,創(chuàng)建一個新文件
Truncate 打開已存在的文件并清空原來所有的內(nèi)容
FileAccess的值
權(quán)限 說明
Read 只讀
Write 只寫
ReadWrite 讀寫
FileShare的值
權(quán)限 說明
Read 只讀
Write 只寫
ReadWrite 讀寫
None 文件獨占,其他進程不能訪問該文件
3. 怎樣讀取文件數(shù)據(jù)
在Asp.net中,主要由SteamReader的方法實現(xiàn)。 SteamReader取得反饋信息的方法有三種:
read:一次讀取一個字符
readline:讀取字符直到行尾
readtoend:讀取字符直到流結(jié)尾
第一中方法read返回的是Ascii碼值,我們可以string.chr(objreader.read)來轉(zhuǎn)化為實際值
還可以從流中返回指定數(shù)目的字符數(shù), objreader.read(char(),start,end)
下面這個例子是返回三十個字符。
Dim objreader as new StreamReader(server.mappath(“test.aspx”))
Dim arrstr() as char=new char(30)
Objreader.read(arrstr,0,30)
For I=0 to ubound(arrstr)-1
lblResponse.text+=arrstr(i)
next
objreader.close
用第二種方法readline時,此時我們可以配合peek()使用,peek()方法判斷是否到了流結(jié)尾,注意:peek()方法獲取下一個字符,但并不將其返回。
我們可以用一個Web服務器控件label(id="lblResponse")來顯示獲取的數(shù)據(jù)。
Dim objreader as new StreamReader(server.mappath(“test.aspx”))
while objreader.peek() > -1
lblResponse.text+=server.HTMLEncode(objreader.ReadLine) & "
"
end while
objreader.close
第三種方法最簡單易用:
Dim objreader as new StreamReader(server.mappath(“test.aspx”))
lblResponse.text+=server.HTMLEncode(objreader.ReadtoEnd)
objreader.close
4. 輕輕松松寫文件
在Asp.net中,主要由StreamWriter的方法實現(xiàn)。
可以這樣定義一個StreamWriter
dim objwriter as new StreamWriter(filestream,append)
注意append這個參數(shù) ,它是一個布爾型
Append值
Flase 若文件存在,原文件被覆蓋
若文件不存在,創(chuàng)建該文件
True 追加到文件尾部
Steamwriter寫數(shù)據(jù)的方法比StreamReader少,有write()和writeline()兩種
Dim objwriter as new StreamWriter(server.mappath(“test.aspx”),true)
Objwriter.writeline() ‘寫入了一個換行符
Objwriter.writeline(“這將寫入一行數(shù)據(jù)”)
Objwrite.write(“寫入數(shù)據(jù),但不帶換行符”)
5.文件和目錄的復制、創(chuàng)建、刪除、移動
文件和目錄的復制、創(chuàng)建、刪除、移動
方法 說明
Directory.CreateDirectories 創(chuàng)建指定的所有目錄
Directory.CreateDirectory 創(chuàng)建一個目錄
Directory.Delete 刪除一個目錄
File.Copy 復制文件,overwrite指定是否覆蓋已有文件
File.Create 創(chuàng)建新文件
File.CreateText 創(chuàng)建一個StreamWriter對象
File.Delete 刪除一個文件
File.ChangeExtension 修改擴展名,將extension為nothing將刪除擴展名,擴展名中必須有“.”
File.HasExtension 判斷是否有擴展名,如果有,返回真值
Move 移動文件或目錄
6.測試...
海騰數(shù)據(jù)中心(技術部整理)
2007-10-12
海騰公告海騰數(shù)據(jù)最新新聞公告
400-6717-361
Copyright© 2004-2020 河南海騰電子技術有限公司 版權(quán)所有 經(jīng)營性ICP/ISP證 備案號:B1-20180452 豫公網(wǎng)安備 41019702002018號 電子營業(yè)執(zhí)照