mysql中的宽字符注入_深入理解Mysql宽字符注入
之前記錄過一篇 寫的不夠詳細
概念
寬字節是相對于ascII這樣單字節而言的;像GB2312、GBK、GB18030、BIG5、Shift_JIS等這些都是常說的寬字節,實際上只有兩字節
GBK是一種多字符的編碼,通常來說,一個gbk編碼漢字,占用2個字節。一個utf-8編碼的漢字,占用3個字節
原理
mysql在使用GBK編碼會認為兩個字符為一個漢字,只要前一個字符的ascii碼>128就是漢字的編碼范圍
利用場景
轉義函數:為了過濾用戶輸入的一些數據,對特殊的字符加上反斜杠“\”進行轉義;Mysql中轉義的函數addslashes,mysql_real_escape_string,mysql_escape_string等,還有一種是配置magic_quote_gpc,不過PHP高版本已經移除此功能
addslashes():
函數返回在預定義字符之前添加反斜杠的字符串。
預定義字符是:
單引號(')
雙引號(")
反斜杠()
NULL
繞過思路
想辦法給\前面再加一個\(或單數個即可),變成\\’,這樣\被轉義了,'逃出了限制
去掉轉義符\
\的16進制編碼為5c
只要前一個字符的ascii碼>128就是漢字的編碼范圍
實驗
1、加個%df跟\組成一個漢字 再加個'閉合前面的引號
2、129的十六進制為81,我們輸入%81'試一下
這里%df url解碼后就是圖示亂字符
playload
%81' or 1=1#
%df' order by33--+
工具
總結
以上是生活随笔為你收集整理的mysql中的宽字符注入_深入理解Mysql宽字符注入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 闺蜜爸爸希望闺蜜妈妈接受20年前的红颜知
- 下一篇: java for嵌套for循环语句_ja