SQL注入詳細講解概括—寬字節注入


SQL注入詳細講解概括—寬字節注入

1、寬字節注入原理

2、寬字節注入方法


 

一、寬字節注入原理

  What is 寬字節?

  字符大小為一個字節時為窄字節

  字符大小為兩個及以上的字節為寬字節

  英文26個字符所以1個字節就夠用了,而漢字字符數太多,一個字節顯然不夠用

  寬字節注入原理

  為了防止網站被SQL注入,一些網站開發人員會做一些防護措施,其中最常見的就是對一些特殊字符進行轉義

  通過以前的文章,能夠了解到,sql注入非常關鍵的一步就是讓引號閉合和跳出引號,無法跳出引號 ,那么你輸入的內容就永遠在引號里,那么你輸入的東西永遠就是字符串,很顯然這不符合sql注入的要求,,

  So,網站開發者也想到了這一步,於是乎,做個防護補救,>>>>   轉義,,對輸入的敏感內容、特殊字符進行轉義,,PHP里有個轉義符 “\” 反斜杠

  PHP的防御函數

  magic_qutes_gpc(魔術引號)

  magic_qutes_gpc函數在php中的作用是解析用戶提交的數據,如有:post、get、cookie過來的數據增加轉義符“\” 以確保這些數據不會引起程序錯誤

  轉義符的 作用:去除特殊意義,只把字符當作字符串進行理解

  要理解注意的一個點,就是轉義符自動的出現在輸入的特殊字符前面:

  輸單引號>>> '   >>>   有了轉義符    >>>  \'

  要注意轉義符是 出現在前面的,,非常重要,,有助於理解后面的內容  

  ok,,那么 我們輸入的引號被轉義之后只當作了一個字符串,無法實現包裹字符串的作用了

  那么怎么解決,,讓轉義(\)失去轉義的作用,,

  ok,,讓轉義失去作用的方法就是寬字節注入

  so,,How does it lose its function?

  Frist,you know,寬字節編碼

  寬字節編碼就是 一個字符可能是好幾個字節

  ok,,,想一個問題,,中國的漢字,,偏旁部首,,

  eg:和  由禾+口 組成,

  那么,禾+口  >>> 和    這個過程的兩個字組成了一個字,既沒有了禾的意思也沒有了口的意思  變成了和的意思

  那 讓轉義符失去轉義作用的方法  於這個漢字方法  可以說是異曲同工之妙   

  \   >>>  轉義通過編碼是 >>>  %5c

  那么 找到一個與 %5c 的另一半 讓他們組成一個新字符不就 OK了嗎

  哪個字節編碼能讓他們組成一個新字符呢    很多  eg:%df ......

  >>>  %df%5c     

  這兩個在一塊就組成了一個新的字符,准確的說是一個漢字,那么我們輸入的引號的特殊意義就存在,可以是包裹字符串的了

  PS:只有是中文編碼的數據庫才可以這樣

二、寬字節注入方法

  GET傳參的寬字節注入

  so easy  在引號前加個%df  之后就進行正常的注入就行了

  POST傳參的寬字節注入

  需要借助工具burp,抓包,改包來進行

  第一步,正常寫入注入語句 ,一般是在引號前寫一個字符,並知道此字符對應的ascii碼值,方便在包里找到輸入數據  ,我比較喜歡用小寫a  >>>a對應的ascii碼值是61

  第二步,打開burp進行抓包,在Proxy一欄下的Itercept,點擊Hex,找到你輸入的內容,綠框里就是,找到引號前的哪個字符,我寫的是a,對應的是61,,可以看到有兩個61,因為在這一行中,在我輸入的前面還有一個name  這里面有一個a  都是按順序一一對應來的,我們只需要修改第二的個61即可,,雙擊61,,改為df ,,回車,,放數據包,,搞定

  

 

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM