了解GBK編碼
盡管現在呼吁所有的程式都使用unicode編碼,所有的網站都使用utf-8編碼,來一個統一的國際規范,但仍然有很多,包括國內及國外(特別是非英語國家)的一些cms,仍然使用著自己國家的一套編碼,比如我國的gbk,作為自己默認的編碼型別,也有一些cms為了考慮老用戶,推出了gbk和utf-8兩個版本(例如:dedecms)
我們就以gbk字符編碼為例,拉開帷幕,GBK全稱《漢字內碼擴展規范》,gbk是一種多字符編碼,他使用了雙位元組編碼方案,因為雙位元組編碼所以gbk編碼漢字,占用2個位元組,一個utf-8編碼的漢字,占用3個位元組,我們可以通過輸出來驗證這句話,
例如:0xD50×5C 對應了漢字“誠”,URL編碼用百分號加字符的16進制編碼表示字符,于是 %d5%5c 經URL解碼后為“誠”,
寬位元組注入原理
寬位元組SQL注入主要是源于程式員設定資料庫編碼為非英文編碼那么就有可能產生寬位元組注入
例如說MySql的編碼設定為了SET NAMES 'gbk'或是 SET character_set_client =gbk,這樣配置會引發編碼轉換從而導致的注入漏洞,
寬位元組SQL注入就是PHP發送請求到MySql時使用了陳述句SET NAMES 'gbk' 或是SET character_set_client =gbk 進行了一次編碼,但是又由于一些不經意的字符集轉換導致了寬位元組注入,
如:將' 輸入后會變成 \ ' 單引號會被轉義出來
翻譯成url編碼變成 %5c %27 這兩個個
我們想要繞過反斜杠的轉義 讓單引號出現
所以我們需要在 %5c 前面加一個編碼 讓它和%5c結合起來組成一個漢字
例如:%d5' = %d5 \ ' = %d5%5c%27 = "誠"+%27 = "誠"+' = 誠'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/53214.html
標籤:其他
上一篇:用二進制寫程式,提升裝 X 境界
下一篇:子網掩碼的作用與IP網段的劃分
