井號(#):%23
反斜槓():%5c
格式:string addslashes(string $str)
作用:返回字串,該字串為了資料庫查詢語句等的需要在某些字元前加上了反斜線(\)。這些字元是單引號(')、雙引號(")、反斜槓(\)與 null(null字元)
為什麼使用該函式:
在單(雙)引號,反斜線,null前加上反斜線會起到轉義的作用:以單引號為例,再加上反斜線之後,單引號就會被轉義,就是說,此時的單引號僅僅是乙個單引號,但已經不具備單引號原有的語法功能了(相當於單引號就僅僅是乙個字串了)這樣就可以在一定程度上對sql注入進行一定的預防。
那麼我們應該如何從addslashes函式中逃逸出來呢?
存在兩種解決方法:
原理:寬位元組注入是利用mysql的乙個特性,mysql在使用gbk編碼的時候,會認為兩個字元是乙個漢字(前乙個asci碼要大於128,才到漢字的範圍)
在用hackbar進行漢字輸入的時候你會發現,那段漢字就會變成一段百分號編碼,這樣我們就可以利用這個原理從而把反斜槓乾掉。就如上圖,在進行轉義之後,原本是兩個百分號變成了三個,又因為漢字是由兩個百分號組成,所以系統就會識別前兩個百分號成乙個漢字,從而將「\」乾掉。%5c就是「\」
mysql 寬位元組注入 SQL注入之寬位元組注入
簡介 寬位元組注入是相對於單位元組注入而言的。單位元組注入就是大家平時的直接在帶有引數id的url後面 追回sql語句進行注入。比如 1 1 1 2 這個經典的判斷目標是否存在注入的例子就是單位元組注入。理論上說,只要資料庫連線 設定了gbk編碼,或者是預設編碼就 是gbk,那現在的程式裡到處都是注...
寬位元組注入
大家都知道 df 被php轉義 開啟gpc 用addslashes函式,或者icov等 單引號被加上反斜槓 變成了 df 其中 的十六進製制是 5c 那麼現在 df df 5c 27,如果程式的預設字符集是gbk等寬位元組字符集,則mysql用gbk的編碼時,會認為 df 5c 是乙個寬字元,也就是...
寬位元組注入
在使用php連線mysql的時候,當設定 set character set client gbk 時會導致乙個編碼轉換的問題,也就是我們熟悉的寬位元組注入,當存在寬位元組注入的時候,注入引數裡帶入 df 27,即可把 5c 吃掉,舉個例子。當提交 1 1 23 時,mysql的執行的sql語句為 ...