本文章主要涉及sql寬字節(jié)注入注入的原理講解,如有錯誤,望指出。(附有目錄,如需查看請點右下角)一、下圖為本次文章所使用到 user表,該表所在的數(shù)據(jù)庫為 test。
二、首先介紹一下本篇文章所用到的知識點:常用到的url編碼:
addslashes函數(shù)(php4,php5,php7):格式:string addslashes(string $str) 為什么使用該函數(shù):在單(雙)引號,反斜線,NULL前加上反斜線會起到轉(zhuǎn)義的作用:以單引號為例,再加上反斜線之后,單引號就會被轉(zhuǎn)義,就是說,此時的單引號僅僅是一個單引號,但已經(jīng)不具備單引號原有的語法功能了(相當于單引號就僅僅是一個字符串了)這樣就可以在一定程度上對sql注入進行一定的預防。 那么我們應該如何從addslashes函數(shù)中逃逸出來呢?存在兩種解決方法:
寬字節(jié)注入的原理:原理:寬字節(jié)注入是利用mysql的一個特性,mysql在使用GBK編碼的時候,會認為兩個字符是一個漢字(前一個asci碼要大于128,才到漢字的范圍)
在用hackbar進行漢字輸入的時候你會發(fā)現(xiàn),那段漢字就會變成一段百分號編碼,這樣我們就可以利用這個原理從而把反斜杠干掉。就如上圖,在進行轉(zhuǎn)義之后,原本是兩個百分號變成了三個,又因為漢字是由兩個百分號組成,所以系統(tǒng)就會識別前兩個百分號成一個漢字,從而將“\”干掉。%5c就是“\” |
|
|