寬字節注入原理及繞過方式


前言
眾所周知,SQL注入作為危害最大的攻擊方式,開發人員在開發時一定會想辦法去防范,在這里我們介紹一種新的方式——寬字節注入法去繞過設置的障礙
原理
一般來說,如果開發人員在開發是時候,對傳入的參數進行了特殊的函數處理,比如使用了trim()函數,htmlspecialchars()函數,addlashes函數,是可以過濾我們非法提交的參數,從而導致SQL注入無法成功。
作為攻擊者,要完成的是對參數的拼接,從而導致惡意的SQL語句寫入。作為開發者要完成的是SQL輸出參數的一個過濾比如對惡意的字符進行轉移
常用過濾函數
trim()函數
移除字符串兩側的空白字符或其他預定義字符
htmlspecialchars()函數
把預定義的字符"<"">"換為HTML實體,預防XSS
addslashes()函數
返回在預定義字符之前添加反斜杠的字符串
# 預定義字符
1.單引號(')
2.雙引號(")
3.反斜杠(\)
4.NULL
上述函數常在CMS里使用進行過濾
寬字節注入條件
1.數據庫為GBK編碼
2.使用了轉義函數,將、POGETSTcookie傳遞的參數進行過濾,將單引號、雙引號、null 等敏感字符用轉義符 \ 進行轉義
繞過方式
root %df' or 1=1 #
# 原理:在GBK編碼中,反斜杠的編碼是%5c,在輸入%df后,使得添加反斜杠后形成%df%5c,而%df%5c是繁體字“”,單引號成功逃逸,爆出Mysql數據庫的錯誤
以pikachu為例
我們在正常updatexml()注入后發現不成功
接下來嘗試寬字節注入,而直接在網頁中提交依然不行,所以判斷為POST請求,使用抓包工具進行注入
注入成功
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM