寬字節注入1

寬字節注入原理

GBK 佔用兩字節,即一個符號佔用兩個字節

ASCII佔用一字節

PHP中編碼爲GBK,函數執行添加的是ASCII編碼(添加的符號爲“\”),MYSQL默認字符集是GBK等寬字節字符集。

大家都知道%df’ 被PHP轉義(開啓GPC、用addslashes函數,或者icov等),單引號被加上反斜槓\,變成了 %df\’,其中\的十六進制是 %5C ,那麼現在 %df\’ =%df%5c%27,如果程序的默認字符集是GBK等寬字節字符集,則MySQL用GBK的編碼時,會認爲 %df%5c 是一個寬字符,也就是縗,也就是說:%df\’ = %df%5c%27=縗’,有了單引號就好注入了。

%df%5c各站一個字節,合起來就是兩個字節
因爲又是GBK編碼
所以就把這兩個字節合併爲縗

代碼分析

對於第一個函數check輸入並沒有進行過濾
而是直接用
倒數第四行表示使用的是GBK編碼
在這裏插入圖片描述
請看倒數第四行
id=’ ’
你輸入id=1%df’
%df後一個引號閉合了前一個引號,這就是你之前學的
那爲啥要多此一舉呢?
不直接id=1’ union select啥啥
因爲php有個轉義函數
你輸入5’後的引號會被變爲’
即多出了一個斜槓,所以就不能直接用上述id=5’ union select
所以需要id=1%df’ union select 1,user(),version() --+

Sqlmap安全測試

–search獲取數據庫名錶名字段名
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章