隨著技術的發展,ASP資料庫插馬也不是什麼新鮮的東東了,相信閣下也玩過這個的吧。呵呵,那你有沒有遇到過插入的asp代碼被空格拆開的情況呢(即插入的每個字元之間都出現了空格)?現在,就讓我們來解決這個問題。
隨著技術的發展,ASP資料庫插馬也不是什麼新鮮的東東了,相信閣下也玩過這個的吧。呵呵,那你有沒有遇到過插入的asp代碼被空格拆開的情況呢(即插入的每個字元之間都出現了空格)?現在,就讓我們來解決這個問題。
經過對多例實際情況的分析,我發現只要出現代碼被空格隔開的資料庫,相應的欄位的Unicode壓縮屬性總是“否”。相反,如過Unicode壓縮屬性為“是”,則可以通過該欄位進行插馬。
經過搜尋,發現微軟官方對Unicode壓縮的描述:“Microsoft Access 2000 或更高版本使用 Unicode 字元編碼方案來表示文本、備註和超連結欄位中的數據。Unicode 將每個字元表示為兩個位元組……需要的存儲空間比在 Access 97 或更早版本中要多……可通過將“文本”、“備註”或“超連結”欄位的“Unicode 壓縮”屬性的默認值設為“是”來彌補 Unicode 字元表達方式所造成的影響”
喔,原來開啟了 Unicode 壓縮的話,資料庫會自動把拉丁字元(西歐語言如英語、西班牙語或德語)用1個位元組來存儲;如果沒開啟,資料庫就會用2個位元組(1個位元組為0x00,作為文本將被自動轉換為空格)存儲拉丁字元,也就造成了插入的asp代碼被空格隔開的情況。
那么,在這種情況下如何插馬呢?
突破口就在 Unicode 壓縮那兒,既然資料庫不給我們壓縮,那么就讓我們自己來壓縮吧。很簡單,就是把asp代碼先轉化為 Unicode 然後再插入資料庫。我用VB寫了個小軟體來實現這個功能,注意由於轉換的時候容易產生不可顯示的字元(將會出現?),所以要精心構造代碼。
經過對多例實際情況的分析,我發現只要出現代碼被空格隔開的資料庫,相應的欄位的Unicode壓縮屬性總是“否”。相反,如過Unicode壓縮屬性為“是”,則可以通過該欄位進行插馬。
經過搜尋,發現微軟官方對Unicode壓縮的描述:“Microsoft Access 2000 或更高版本使用 Unicode 字元編碼方案來表示文本、備註和超連結欄位中的數據。Unicode 將每個字元表示為兩個位元組……需要的存儲空間比在 Access 97 或更早版本中要多……可通過將“文本”、“備註”或“超連結”欄位的“Unicode 壓縮”屬性的默認值設為“是”來彌補 Unicode 字元表達方式所造成的影響”
喔,原來開啟了 Unicode 壓縮的話,資料庫會自動把拉丁字元(西歐語言如英語、西班牙語或德語)用1個位元組來存儲;如果沒開啟,資料庫就會用2個位元組(1個位元組為0x00,作為文本將被自動轉換為空格)存儲拉丁字元,也就造成了插入的asp代碼被空格隔開的情況。
那么,在這種情況下如何插馬呢?
突破口就在 Unicode 壓縮那兒,既然資料庫不給我們壓縮,那么就讓我們自己來壓縮吧。很簡單,就是把asp代碼先轉化為 Unicode 然後再插入資料庫。我用VB寫了個小軟體來實現這個功能,注意由於轉換的時候容易產生不可顯示的字元(將會出現?),所以要精心構造代碼。