寬字節SQL注入

注入產生的原理:程序員

數據庫設置爲GBK編碼:數據庫

  寬字節注入源於程序員設置MySQL鏈接時錯誤配置爲:set character_set_client=gbk,這樣配置會引起編碼轉換從而致使的注入漏洞.函數

  一、正常狀況下,當GPC開啓或者使用addslashes函數會過濾GET或POST提交的參數時,黑客使用的單引號(')會被轉義成:\';編碼

  二、但若是存在寬字節注入,咱們輸入%df%27時,首先通過上面提到的單引號轉義變成了%df%5c%27(%5c是反斜槓),以後在數據庫查詢utf-8

    前因爲使用了GBK多字節編碼,即在漢字編碼範圍內兩個字節會編碼爲一個漢字.從而形成注入漏洞.it

 

服務端代碼設置爲UTF-8編碼:原理

  utf-8轉GBKcli

  這裏思考下「錦」這個字,它的utf-8編碼是e98ca6,它的gbk編碼是%e5%5c,而上面提到過反斜槓\正好爲%5c.因此若是咱們將title設置配置

爲:'錦',首先通過addlashes函數或GPC對單引號轉義變爲:錦\', 而後會通過iconv函數會對"錦"轉化爲gbk編碼,最後就是%e5%5c%5c%27.程序

反斜槓被轉義了(%5c%5c),從而單引號逃逸出來就會引起注入漏洞。

相關文章
相關標籤/搜索