mysql報錯注入利用

簡介

sql注入一般分類如下:
- 基於時間注入
- 基於報錯注入
- 基於聯合查詢注入
- 基於布爾注入

基於報錯注入也是一種sql注入漏洞,漏洞原因是後端在處理用戶輸入時直接拼接進sql語句中進行執行,從而產生了正常業務之外的邏輯。其實本質上和xss這種代碼注入類似,核心是沒有區分開代碼和用戶輸入的數據。
基於報錯注入特點是頁面會直接顯示回顯sql語句執行的報錯信息,這樣我們其實可以通過故意構造錯誤的sql語句,將我們想要執行的攻擊sql語句的執行結果直接在頁面上回顯出來。

常見函數

mysql中最常見的利用函數就是extractvalueupdatexml這兩個了,以extractvalue爲例,看下它原始的用法:
ExtractValue(xml_str , Xpath) 函數,使用Xpath表示法從XML格式的字符串中提取一個值
在這裏插入圖片描述

函數利用

以上講的是extractvalue函數的正常使用情況,但是如果我們構造了不符合規定的Xpath,mysql就會報語法錯誤,並顯示XPath的內容,攻擊者也是利用這一特性,將想要執行的攻擊sql語句結果帶出來。

  1. .XPATH語法的報錯條件是遇到特殊字符就會報錯,如~{等。以~爲例,18進製爲0x7e,mysql本地執行可以帶出user()執行結果。
    在這裏插入圖片描述

  2. 找個例子,可以通過extractvalue函數,成功查出當前user,可以看到並非是root權限。
    payload:) and 1=(extractvalue(1,concat(0x7e,user(),0x7e))) and 1=1;
    在這裏插入圖片描述

  3. updatexml函數類似,如下:
    payload:) and 1=(updatexml(1,concat(0x7e,user(),0x7e),1)) and 1=1;
    在這裏插入圖片描述

  4. 另外有一點需要注意的是,報錯內容不可能不限制長,其實是有一定長度限制的,報錯內容大約是32個字符:
    在這裏插入圖片描述

總結

在此小記下mysql基於報錯注入的利用。對於互聯網行業,此類注入一般比較少,最多的還是基於時間的注入。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章