編碼那些事兒

常見編碼

文本編碼

常見的文本編碼方法有:ANSI(多字節(jié))的ASCII編碼怀大、GB2312、GBK潜慎、GB18030、UNICODE垒手。
我相信有不少人都搞不拎清這幾個編碼有什么區(qū)別倒信,這里就不講故事說這些網(wǎng)頁編碼的發(fā)展歷史了鳖悠,我們從下面這個維恩圖來解釋竞穷,這幾個編碼的區(qū)別瘾带。


字符編碼所包含的字符內(nèi)容范圍維恩圖
字符編碼 包含內(nèi)容
ASCII 英文字符
GB2312 在ASCII編碼內(nèi)容的基礎(chǔ)上朴恳,增加了6k+的常用漢字
GBK 在GB2312的基礎(chǔ)上于颖,增加了繁體字及其他各種漢字字符等
GB18030 在GBK的基礎(chǔ)上嚷兔,增加了少數(shù)民族語言系統(tǒng)中的字符
UNICODE 包含了世界上任何一個文字和標(biāo)志

寬字節(jié)編碼

寬字節(jié)也叫多字節(jié)冒晰。英文字符大小為2個字節(jié)的叫寬字節(jié)同衣,相對的,英文字符大小為1個字節(jié)的叫窄字節(jié)壶运。
編譯器默認(rèn)的中文字符占2個字節(jié),英文字符占1個字節(jié)蒋情。
利用寬字節(jié)編碼的注入,是利用單字節(jié)字符(例如引號這種符號)占寬字節(jié)的低字節(jié)部分棵癣,只要在前面增加一個高字節(jié)辕翰,就會被組成合法字符狈谊,從而繞過限制金蜀。
具體的利用刷后,在后面寫到相關(guān)漏洞攻擊時具體寫。

字符集 高字節(jié)范圍 低字節(jié)范圍
GB2312 A1 - F9 40 - 7E尝胆、A1 - FE
GBK 81 - FE 40 - EF

GB18030字符集為多字節(jié)护桦,范圍為:1字節(jié)從00到7F; 2字節(jié)高字節(jié)從81到FE,低字節(jié)從40到7E和80到FE;4字節(jié)第一三字節(jié)從81到FE,第二四字節(jié)從30到39因妙。

UTF標(biāo)準(zhǔn)

UTF標(biāo)準(zhǔn)為面向傳輸?shù)臉?biāo)準(zhǔn)痰憎,解決了UNICODE如何在網(wǎng)絡(luò)上傳輸?shù)膯栴}。
顧名思義以故,UTF-8就是每次8個位傳輸數(shù)據(jù)蜗细,UTF-16就是每此16個位傳輸數(shù)據(jù)。在傳輸過程中怒详,從UNICODE到UTF時炉媒,需要通過一些算法和規(guī)則的轉(zhuǎn)換,并不是直接的對應(yīng)的昆烁。

文件BOM頭

為了避免在文本文件中輸入的字符與該應(yīng)用本身默認(rèn)的編碼方式不符吊骤,從而導(dǎo)致重新打開新建的文本文件時出現(xiàn)亂碼,微軟公司搞了個BOM頭的東西善玫。
它會在文件開始的地方插入三個不可見的字符(即BOM)水援,用于然后編輯器識別文件的正確編碼方式密强。

URL編碼

由于URL只能通過ASCII字符集在因特網(wǎng)進(jìn)行發(fā)送茅郎,所以必須將URL進(jìn)行URL編碼。
非ASCII字符使用"%"后跟兩位的十六進(jìn)制數(shù)來替換或渤,URL中的空格一般使用"+"來替換系冗。

HTML實(shí)體編碼

命名實(shí)體

格式:&開頭,;結(jié)尾薪鹦。例如惯豆,±的命名實(shí)體為±

字符編碼

一般為十進(jìn)制、十六進(jìn)制楷兽、Unicode編碼等华临。
格式:&#開頭芯杀,;結(jié)尾。例如雅潭,的十進(jìn)制字符編碼為≤

JS編碼

JS的四種字符編碼策略:

  1. 三個八進(jìn)制數(shù)字揭厚,如果不夠個數(shù)扶供,前面補(bǔ)0,例如“e”編碼為“\145”
  2. 兩個十六進(jìn)制數(shù)字椿浓,如果不夠個數(shù)太援,前面補(bǔ)0,例如“e”編碼為“\x65”
  3. 四個十六進(jìn)制數(shù)字轰绵,如果不夠個數(shù)粉寞,前面補(bǔ)0,例如“e”編碼為“\u0065”
  4. 對于一些控制字符唧垦,使用特殊的C類型的轉(zhuǎn)義風(fēng)格(例如\n和\r)

CSS編碼

格式:\開頭液样,后跟1~6位的十六進(jìn)制數(shù)。例如鞭莽,e可以編碼為“\65”或“65”或“00065"。

復(fù)合編碼

就是一個語句中有多種編碼方式的內(nèi)容澎怒,在瀏覽器解析過程中,語句解析順序即從外向內(nèi)喷面。
例如語句:

<td onclick=”openUrl(add.do?userName=’<%=value%>’);”>點(diǎn)我呀</td>

最里面<%=value%>在URL中出現(xiàn),第二層openUrl(add.do?userName=’<%=value%>’);在JS中出現(xiàn)琳状,最外層是HTML中的一部分。所以在解碼時的順序應(yīng)為:HTML解碼→JS解碼→URL解碼念逞,編碼順序就是解碼順序的反一下。

以上編碼在XSS漏洞挖掘中非常的有用翎承,在其他注入攻擊中也會用到。在前端安全方面叨咖,編碼安全問題是很重要的,一開始覺得難沒關(guān)系仰剿,可以慢慢深入學(xué)習(xí)痴晦,畢竟一口吃不成胖子嘛~

在線編解碼工具: https://evilcos.me/lab/xssor/

序列化編碼問題

Java序列化問題

PHP序列化問題

Python序列化問題

因?yàn)榘仔∨智懊娴膬?nèi)容看著看著去看編碼繞過產(chǎn)生XSS了,所以后面序列化編碼問題來不及寫了誊酌。明天補(bǔ)上好啦~迫不及待想寫XSS系列2333

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市碧浊,隨后出現(xiàn)的幾起案子涂邀,更是在濱河造成了極大的恐慌,老刑警劉巖比勉,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驹止,死亡現(xiàn)場離奇詭異,居然都是意外死亡臊恋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門坊夫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撤卢,“玉大人,你說我怎么就攤上這事凸丸「ぴ海” “怎么了瞭稼?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵腻惠,是天一觀的道長。 經(jīng)常有香客問我悔雹,道長欣喧,這世上最難降的妖魔是什么腌零? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任益涧,我火速辦了婚禮驯鳖,結(jié)果婚禮上闲询,老公的妹妹穿的比我還像新娘浅辙。我一直安慰自己,他們只是感情好记舆,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布泽腮。 她就那樣靜靜地躺著,像睡著了一般盛正。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豪筝,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天续崖,我揣著相機(jī)與錄音敲街,去河邊找鬼严望。 笑死,一個胖子當(dāng)著我的面吹牛像吻,可吹牛的內(nèi)容都是我干的复隆。 我是一名探鬼主播姆涩,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼亏栈!你這毒婦竟也來了宏赘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤镇饮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后储藐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘶是,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年辖源,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片克饶。...
    茶點(diǎn)故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡誊辉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出堕澄,到底是詐尸還是另有隱情,我是刑警寧澤拍屑,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布坑傅,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蒜茴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毡鉴。 院中可真熱鬧,春花似錦猪瞬、人聲如沸入篮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至酥诽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肮帐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工托修, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恒界,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓十酣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吃环。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 每個文本編輯器都有默認(rèn)的編碼方式(比如 UTF-8 編碼),當(dāng)我們保存文檔的時候,可以選擇編碼方式好唯,如果沒有特意選...
    _于曼麗_閱讀 1,531評論 0 1
  • 字符是用戶可以讀寫的最小單位靶端。計算機(jī)所能支持的字符組成的集合谎势,就叫做字符集杨名。字符集通常以二維表的形式存在。二維表的...
    劉惜有閱讀 8,131評論 2 14
  • 編碼問題一直困擾著開發(fā)人員须喂,尤其在 Java 中更加明顯,因?yàn)?Java 是跨平臺語言坞生,不同平臺之間編碼之間的切換...
    x360閱讀 2,482評論 1 20
  • 有人說娶一個老婆并不是娶了一個人掷伙,而是娶她的全家,七大姑八大姨
    青蛙歌唱家閱讀 224評論 0 0
  • 文/一葉瓢萍 寫于2018年12月31日 每到年終歲末的時候炎咖,總是感嘆時間飛逝,歲月無情升熊,一轉(zhuǎn)眼就到了和2018說...
    一葉飄萍閱讀 521評論 3 18