1. 程式人生 > 其它 >SQL注入——寬位元組注入原理及繞過方式

SQL注入——寬位元組注入原理及繞過方式

前言 眾所周知,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請求,使用抓包工具進行注入 注入成功