白帽子講web安全 編碼問題sql注入的 筆記

2021-10-25 14:39:14 字數 1790 閱讀 3803

在書上166面的7.2.4編碼問題,討論了寬字符集,gbk編碼導致的漏洞。但是有些地方講得有點迷糊,也許還有錯別字。

所以我結合國外在06年發布的addslashes() versus mysql_real_escape_string()這篇文章分析了一下。

這裡需要知道,作者借char表達的意思是字元,不是位元組

但是加的圖所說的「db interprets as 2 chars」和上面的「0xbf27 和 0xbf5c都會被認為是乙個字元」就讓人頭疼了。

所以需要對照著英文看:

in gbk, 0xbf27 is not a valid multi-byte character, but 0xbf5c is.interpreted as single-byte characters, 0xbf27 is 0xbf(¿)followed by 0x27('), and 0xbf5c is 0xbf(¿)followed by 0x5c(\).

that's because 0xbf5c is interpreted as a single character, not two. oops, there goes the backslash.

根據上面幾行英文,和圖上的「db interprets as ...」,可以知道

在gbk字符集中,0xbf27 不是乙個有效的多位元組字元,在解析為單位元組字元的過程中,0xbf27 變成了 0xbf(¿)和 0x27(')這兩個字元,0xbf5c 是gbk字符集裡有效的中文字元(縗)

對照著上圖,再看原文的圖就清楚了。原圖的意思是:當0xbf27被解釋為2個字元時,是(¿)(')

當0xbf5c被解釋為1個字元時,是(縗)

根據兩處對比,可以看到下面的應該是「雙位元組字元會被認為是兩個字元」,而不是位元組。

只有將0xbf27認為是2個字元,才可以對0x27這個引號進行轉義。所以可能是作者筆誤。

另外提一下,在網上,上面那個英文部落格的翻譯是有問題的:

原英文:

that's because 0xbf5c is interpreted asa single character, not two. oops, there goes the backslash.

可以知道,譯文把a single character翻譯成單位元組字元是不對的,應該是單個字元。

我也是剛剛學習web安全,文章99%都是貼上的。

參考:php字元編碼繞過漏洞總結 | 鬼仔's blog

《白帽子講Web安全》 學習筆記

最近加入新公司後,公司的官網突然被google標記為了不安全的詐騙 一時間我們資訊科技部門成為了眾矢之的,雖然老官網並不是我們開發的 因為開發老官網的前輩們全都跑路了 我們花了很多時間做web安全掃瞄以及修復,在檢查和修復過程中,發現老系統的 的不可維護性 再次說明整潔 之道clean code的重...

讀書筆記《白帽子講web安全》

2016年3月24日 09 34 32 星期四 ddos攻擊 一種 隨機生成ip,去建立鏈結,由於http tcp握手協議原理,傳送應答報文時因為ip無效會導致等待重發,這種行為可以通過電腦硬體裝置攔截 清洗 二種 通過掛馬等手段控制別人電腦,使用有效ip去瘋狂訪問某乙個介面導致服務掛掉,這種行為要...

《白帽子講web安全》讀書筆記

第1章 安全世界觀 攻擊分兩種 exploit script 早期多攻擊系統和軟體,能快速獲得root許可權。smtp,ftp使用者多 web使用者少,且攻擊它只能獲得較低許可權 防火牆,acl 訪問控制列表 的興起,給暴露的系統施加了屏障 使得暴露在外的非web程式越來越少 web的興起 web攻...