深入了解以“.”結(jié)尾的文件夾
沒見過這樣的文件夾或是不知道我要說什么?看下面這張圖就會知道了。

其中有六個文件夾是以 . 結(jié)尾的。你可以試著在windows模式下直接創(chuàng)建這樣的文件夾,但是你會發(fā)現(xiàn)你永遠無法得到以 . 結(jié)尾的文件夾。這是為什么?你可以在cmd下輸入 md x..\ 來創(chuàng)建 x. 文件夾,而不是 x.. 文件夾,這又是為什么?我敢保證如果你能在windows模式下創(chuàng)建一個文件夾并且成功輸入 x..\ 這些字符的話,文件夾的名字必定是 x. !不過遺憾的是windows會在你按下鍵盤的 \ 符號時提示“文件名不能包含下列任何字符之一:\ / : * ? " < > | ”。
在cmd下你可以輸入“\ / : * ? " < > | ”任意字符而不會被終止。當(dāng)你使用md命令來創(chuàng)建一個文件夾時,如果輸入 md x.. 時,將創(chuàng)建出 x 文件夾而不是 x. 也不是 x.. !這和在windows下直接創(chuàng)建這樣的文件夾是一個道理:尾部的幾個 . 被過濾了!到此我們就可以知道 \ 這個符號在特殊文件夾的創(chuàng)建起了很重要的作用。從上面的分析我們已經(jīng)知道在windows模式下命名文件夾時是是無法輸入 \ 這樣的特殊字符的!于是在cmd下輸入 md x..\ 時,以一個點 . 結(jié)尾的文件夾就創(chuàng)建出來了。由此可知 \ 符號防止了那些 . 被過濾掉。然而為什么還有一個點被過濾掉了呢?UMU的文章《[Windows 文件系統(tǒng)]U..\ 無法正常訪問的真正原因》會帶來些啟示。下面來看些“奇怪”的現(xiàn)象……
根據(jù)上面的原理,我們可以在cmd下輸入 md x...\ 創(chuàng)建出以兩個點 . 結(jié)尾的文件夾,接著三個點、四個點、五個點……看上圖以 x 開頭的5個空文件夾(注意是空文件夾),不論你刪除哪個文件夾(而且你最多只能刪除一個文件夾,這不是我要求你這樣,不信你試試?)都將成功,并且在你刷新窗口時你會發(fā)現(xiàn)最終消失的文件夾居然是不以點結(jié)尾的文件夾 x ,而其他四個結(jié)尾帶點的文件夾“安然無恙”!這是不是說明我們在任意一個文件夾上的任意操作最終都將反應(yīng)到x文件夾上?這5個文件夾本質(zhì)上也就是一個即文件夾 x ?下面的非空文件夾的現(xiàn)象會推翻這些疑問。
當(dāng)你在文件夾 x(或x.)創(chuàng)建一個文本文件1.txt時,x.(或x)也將出現(xiàn)1.txt,然而在其他三個文件夾 x.. , x... , x.... 中并沒有發(fā)現(xiàn)1.txt文件,有的人可能會說:“其實你在地址欄輸入C:\x..\1.txt,或C:\x...\1.txt,或C:\x....\1.txt都將成功訪問1.txt文件,這說明1.txt文件其實是存在于那三個文件夾中的!”但是我建議先看下面這張圖(注意地址欄):





一個沒有探究價值的問題,以上所有文件夾都是獨立的。
當(dāng)我們創(chuàng)建一個..結(jié)尾的文件夾時,只顯示一個.,原因是在windows識別時過濾了一個.,當(dāng)我們試圖訪問或操作這個目錄時,windows又過濾了一個.,那么這時我們實際訪問的是一個沒有.的目錄--一個不存在的目錄,所以無法訪問。
但如果我們創(chuàng)建一個沒有.的目錄在同樣的父目錄下,那么這個訪問就有效,也就是說這個..的文件夾波及了沒有.的文件夾,而實際上這不是同一個文件夾。
而當(dāng)這個.增加到2個以上時,目標文件夾就會帶有一個或以上.,也是不可訪問的了。
相關(guān)文章
DVBBS7.0Sp2前臺提權(quán)漏洞利用程序[Kendy版]源碼
DVBBS7.0Sp2前臺提權(quán)漏洞利用程序[Kendy版]源碼...2007-01-01WordPress下載監(jiān)控插件id參數(shù)SQL注入漏洞
發(fā)布時間:2008-04-28 更新時間:2008-04-30 危害級別:★★★☆☆☆ 受影響版本: WordPress Download Monitor 2.0.6 描述: BUGTRAQ ID: 289752008-05-05